.Net WebBrowser,Popup重新要求在某些PC上登录

时间:2011-12-20 11:39:35

标签: c# .net winforms cookies

问题:

我正在使用.NET WebBrowser控件。我感到很沮丧,因为在某些个电脑上,弹出窗口似乎会丢失会话cookie。经过大量的研究后,我认为(几乎可以肯定)这是因为:

  

“当您单击托管该应用程序的应用程序中的超链接时   WebBrowser控件,在Internet Explorer中打开一个新页面。在这   方案,会话cookie丢失,您可能必须登录   再次。出现此问题的原因Internet Explorer是不同的   过程比申请过程。会话cookie不能   在进程之间共享。“

问题

我对使用I.E流程非常满意,我只是不希望用户不断登录。那么,为什么这只发生在某些电脑上呢?如何最好地处理这些问题?如果我可以在启动I.E流程之前截取网址,我可以重新登录

到目前为止尝试的解决方案:

结果我尝试了这里提到的解决方案: System.Windows.Forms.WebBrowser open links in same window or new window with same session

private SHDocVw.WebBrowser_V1 Web_V1; //Interface to expose ActiveX methods

private void Form1_Load(object sender, EventArgs e)
{
    //Setup Web_V1 interface and register event handler
    Web_V1 = (SHDocVw.WebBrowser_V1)this.webBrowser1.ActiveXInstance;
    Web_V1.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler(Web_V1_NewWindow);
}

private void Web_V1_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData,string Headers, ref bool Processed)
{
    Processed = true; //Stop event from being processed
    Form1 Popup = new Form1();
    Popup.webBrowser1.Navigate(URL);
    Popup.Show();
}

这给我带来了一些新问题:

  1. 我有一个脚本错误“无法获取属性'焦点'对象的值为null或未定义。
  2. 即安全设置会导致以下对话框“您正在查看的网页正在尝试关闭窗口。您想要......”在JS中到达.close()时。
  3. 为解决这些问题,我尝试了NewWindow2事件:Hans Passant建议的stackoverflow.com/a/6473442/17034。这解决了上述两个问题,但是window.close()现在不再关闭webview /表单。

    这里最好的方法是什么?

0 个答案:

没有答案