C# .Net WebBrowser,弹出窗口重新要求在某些pc上登录';s
问题: 我正在使用.NETC# .Net WebBrowser,弹出窗口重新要求在某些pc上登录';s,c#,.net,winforms,cookies,C#,.net,Winforms,Cookies,问题: 我正在使用.NETWebBrowser控件。我感到沮丧,因为在电脑上,一些弹出窗口似乎丢失了会话cookie。经过大量研究,我认为这(几乎可以肯定)是因为: “当您在承载 WebBrowser控件,将在Internet Explorer中打开一个新页面 在这种情况下,会话cookie丢失,您可能必须登录 再次说明。发生这种行为是因为Internet Explorer是不同的 进程比应用程序进程多。无法创建会话cookie 在进程之间共享。” 问题 我对使用IE过程非常满意,我只是不希望用
WebBrowser
控件。我感到沮丧,因为在电脑上,一些弹出窗口似乎丢失了会话cookie。经过大量研究,我认为这(几乎可以肯定)是因为:
“当您在承载
WebBrowser控件,将在Internet Explorer中打开一个新页面
在这种情况下,会话cookie丢失,您可能必须登录
再次说明。发生这种行为是因为Internet Explorer是不同的
进程比应用程序进程多。无法创建会话cookie
在进程之间共享。”
问题
我对使用IE过程非常满意,我只是不希望用户持续登录。那么,为什么这只发生在一些PC上?如何最好地处理这些问题?如果我可以在IE进程启动之前截取url,我可以重新登录
迄今为止尝试的解决方案:
因此,我尝试了这里提到的解决方案:
这给我带来了一些新问题:
.close()
时,是否需要…”NewWindow2
event:stackoverflow.com/a/6473442/17034。这解决了上述两个问题,但是window.close()现在不再关闭webview/表单
这里最好的方法是什么?试试NewWindow2事件:他们刚刚试用了脚本,NewWindow2肯定是迄今为止最成功的方法。唯一的问题是表单按钮的onClick事件不起作用。我想他们都调用window.close();有什么想法吗?我想你应该把你的回答作为答案,这是我找到的最好的信息来源Window2@CrimsonChin如果汉斯那样做的话,他会比乔恩·斯基特得分更多……可能是他的复制品
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();
}