2009-02-02 4 views
4

У меня есть следующие консоли приложение, написанное в VB.NET:InternetExplorer.Application объект и печенье контейнер

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?

Это веб-страница, которую я использовал для тестирования печенья:

<%@ 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> 

ответ

2

С относительно CreateObject("InternetExplorer.Application") создания экземпляра Internet Explorer и всех экземпляров программировать связь через один процесс. Cookies будут удерживаться в процессе.

Вы можете попробовать вместо этого использовать управление (http://msdn.microsoft.com/en-us/library/3s8ys666.aspx). Вы найдете в http://msdn.microsoft.com/en-us/library/aa752044(VS.85).aspx информацию, которая сравнивается двумя способами. Если в вашем приложении будет использоваться элемент управления , все экземпляры вашего приложения будут иметь собственный набор файлов cookie, но только один набор файлов cookie для каждого процесса зависит от количества элементов управления WebBrowser в вашем приложении.

Внутри любого процесса вы можете в любое время очистить куки с относительно следующего вызова

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

(см http://support.microsoft.com/kb/195192/en), который показывает еще один раз, природа печенье холдинг.

Смежные вопросы