声明:我用的是vs2005,开发C/S桌面应用程序。问题是这样,我应用程序上有 webbrowser1 webbrowser2 两个对象,我用webbrowser1用于登录验证,当webbrowser1登录成功后,webbrowser2自动转到其中一个业务页面上,
即:当 webbrowser1 的 http://192.168.0.1/login.aspx 页面自动登录完成后,直接在webbrowser1 的 DocumentCompleted 里面写 webbrowser2.navigate("http://192.168.0.1/ops/input.aspx"), 但是,当webbrowser2 在加载时,出现 “页面超时,请重新登录”的提示。
如果我在 webbrowser1 里面,用鼠标手工点击进去,链接到 这个业务页面是可以的,但在 webbrowser2 里面却不行。还有,我在上面说,在 webbrowser1 里面,用鼠标手工点击进去,链到业务页是可以的,但因为需要点击很多地方才可以,所以太麻烦,我换了一种方式,当 webbrowser1 的 http://192.168.0.1/login.aspx 页面自动登录完成后,直接在webbrowser1 的 DocumentCompleted 里面作了判断,如果登录成功,就让当前登录窗口直接转入业务地址 
即 webbrowser1.navigate("http://192.168.0.1/ops/input.aspx"),但也出现 “页面超时,请重新登录”的提示。因此,我怀疑是 webbrowser1.navigate 在加载网页的时候,并没有继承上一次打开的相关信息,也可能是这个网站在设计的时候,是不是做了屏蔽,请问如何解决?(顺便说一句,我在其它网站上,上述操作都可以正常完成的。如果我在IE中操作,也一样,同一窗口登录后,里面的手工操作正常,但如果在一个窗口登录成功后,新开一个窗口,然后直接填写内部的业务地址的话,也出现“页面超时,请重新登录”的提示。)

解决方案 »

  1.   

    不知道有没有办法在 webbrowser 对象里面,实现类似 response.redirect 或者 response.transfer  之类的方法,
    我也是瞎猜,不知道大家能不能给想个方法?
      

  2.   

    因为你的网站用户信息用的是SESSION,并且用的是inproc方式,所以在一定的情况下,比如说因为网站本身占用了很多的资源,或者其它原因,导致新打开窗体等出现SESSION丢失的原因
    问题主要是出现在网站这一块
      

  3.   

    只用webbrowser1一个不要用两个,两个的cookie是不同的
      

  4.   

    问题是,即使在同一个 webbrowser1 中,也不能实现,
    通过手工点击是可以使用的,
    自动切换页面还是不行,如果我直接登录后,在同一个 webbrowser1 中也不能用 webbrowser1.navigate("http://192.168.0.1/ops/input.aspx"),同样会出现 “页面超时,请重新登录”的提示。
      

  5.   

    有没有方法,可以通过  response.redirect 或者 response.transfer 来实现, 
    还有就是,能不能通过在 webbrowser1 加载登录完成页面的时候,向网页里面写入一段 javascript 代码来实现, 
    比如: <script language="javascript" src="../funs.js" type="text/javascript"> 
            this.window.location.href='http://192.168.0.1/ops/input.aspx'; 
        </script> 
    感觉有点像写病毒!!!