internet-explorer – InternetExplorer.Application对象和cookie容器

我有以下用VB.NET编写的控制台应用程序:

Sub Main()
    Dim ie As Object = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate2("http://localhost:4631/Default.aspx")
End Sub

该程序使用InternetExplorer.Application自动化对象来启动IE窗口并导航给定的URL.我遇到的问题是,即使我启动了我的应用程序的多个实例,使用此方法创建的IE窗口都共享相同的cookie容器.是否有任何参数我可以使用指定为每个窗口创建不同的cookie容器?

这是我用来测试cookie的网页:

<%@ Page Language="C#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        // Store something into the session in order to create the cookie
        Session["foo"] "bar";
        Response.Write(Session.SessionID);
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
    <form id="form1" runat="server"></form>
</body>
</html>

最佳答案 关于CreateObject(“InternetExplorer.Application”),您可以创建Internet Explorer的实例,并且您程序的所有实例都通过这一个进程进行通信. Cookie将按流程保留.

您可以尝试在应用程序中使用WebBrowser控件(请参阅http://msdn.microsoft.com/en-us/library/3s8ys666.aspx).您可以在http://msdn.microsoft.com/en-us/library/aa752044(VS.85).aspx中找到比较两种方式的信息.如果您将在应用程序中使用WebBrowser控件,则应用程序的所有实例都将拥有自己的一组cookie,但每个进程只有一组cookie,与应用程序中的WebBrowser控件数量无关.

在任何过程中,您都可以随时清除cookie以跟随呼叫

InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);

(见http://support.microsoft.com/kb/195192/en)再次显示了饼干持有的性质.

点赞