我有以下用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>
答案 0 :(得分:2)
关于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
控件的数量无关。 / p>
在任何流程的内部,您可以随时清除关于以下呼叫的cookie
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);
(参见http://support.microsoft.com/kb/195192/en)再次显示了Cookie的性质。