问题:
我正在使用.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();
}
这给我带来了一些新问题:
.close()
时。为解决这些问题,我尝试了NewWindow2
事件:Hans Passant建议的stackoverflow.com/a/6473442/17034。这解决了上述两个问题,但是window.close()现在不再关闭webview /表单。
这里最好的方法是什么?