Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net WebBrowser,弹出窗口重新要求在某些pc上登录';s_C#_.net_Winforms_Cookies - Fatal编程技术网

C# .Net WebBrowser,弹出窗口重新要求在某些pc上登录';s

C# .Net WebBrowser,弹出窗口重新要求在某些pc上登录';s,c#,.net,winforms,cookies,C#,.net,Winforms,Cookies,问题: 我正在使用.NETWebBrowser控件。我感到沮丧,因为在电脑上,一些弹出窗口似乎丢失了会话cookie。经过大量研究,我认为这(几乎可以肯定)是因为: “当您在承载 WebBrowser控件,将在Internet Explorer中打开一个新页面 在这种情况下,会话cookie丢失,您可能必须登录 再次说明。发生这种行为是因为Internet Explorer是不同的 进程比应用程序进程多。无法创建会话cookie 在进程之间共享。” 问题 我对使用IE过程非常满意,我只是不希望用

问题:

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

“当您在承载 WebBrowser控件,将在Internet Explorer中打开一个新页面 在这种情况下,会话cookie丢失,您可能必须登录 再次说明。发生这种行为是因为Internet Explorer是不同的 进程比应用程序进程多。无法创建会话cookie 在进程之间共享。”

问题

我对使用IE过程非常满意,我只是不希望用户持续登录。那么,为什么这只发生在一些PC上?如何最好地处理这些问题?如果我可以在IE进程启动之前截取url,我可以重新登录

迄今为止尝试的解决方案:

因此,我尝试了这里提到的解决方案:

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

  • 我有一个脚本错误“无法获取属性'focus'对象的值为null或未定义”
  • i.e安全设置导致出现以下对话框“您正在查看的网页正在尝试关闭窗口。在JS中达到
    .close()
    时,是否需要…”
  • 为了解决这些问题,我尝试了Hans Passant建议的
    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();
    }