2013-08-12 16 views
5

C# WebBrowser, Web de dahil olmak üzere WebBrowser'ların diğer tüm örnekleriyle birlikte çerezleri paylaştığından, WebBrowser'ın kendi çerez kapsayıcısına sahip olmasını istemeyen çerezleri paylaşmasını istiyorum Daha önce IE veya diğer durumlarda oluşturuldu. .NET WebBrowser'ı IE ya da diğer Eşgörünümlerle paylaşmamaya dikkat edin

Yani örneğin ben herhangi çerezleri olmamalıdır bir WebTarayıcı oluştururken. Ve 2 WebBrowsers örneğini çalıştırdığımda kendi tanımlama kapsayıcılarına sahipler ve birbirleriyle çerezleri paylaşmıyor veya çakışmıyorlar.

Bunu nasıl başarabilirim?

cevap

3

Sen InternetSetOption Win32 işlevini kullanarak işlem başına yapabilirsiniz:

[DllImport("wininet.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)] 
public static extern bool InternetSetOption(int hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength); 

ve sonra uygulamanın başlangıcında aşağıdaki işlevi çağırır:

private unsafe void SuppressWininetBehavior() 
{ 
    /* SOURCE: http://msdn.microsoft.com/en-us/library/windows/desktop/aa385328%28v=vs.85%29.aspx 
    * INTERNET_OPTION_SUPPRESS_BEHAVIOR (81): 
    *  A general purpose option that is used to suppress behaviors on a process-wide basis. 
    *  The lpBuffer parameter of the function must be a pointer to a DWORD containing the specific behavior to suppress. 
    *  This option cannot be queried with InternetQueryOption. 
    *  
    * INTERNET_SUPPRESS_COOKIE_PERSIST (3): 
    *  Suppresses the persistence of cookies, even if the server has specified them as persistent. 
    *  Version: Requires Internet Explorer 8.0 or later. 
    */ 


    int option = (int)3/* INTERNET_SUPPRESS_COOKIE_PERSIST*/; 
    int* optionPtr = &option; 

    bool success = InternetSetOption(0, 81/*INTERNET_OPTION_SUPPRESS_BEHAVIOR*/, new IntPtr(optionPtr), sizeof(int)); 
    if (!success) 
    { 
     MessageBox.Show("Something went wrong !>?"); 
    } 
} 
+0

o iplik başına bunu yapmak mümkün mü? – EBAG

+0

Ben öyle düşünmüyorum. Sonuçta, kullandığınız WebBrowser denetimi, Internet Explorer'ı temsil eden yerel COM nesnesinin yalnızca bir sarıcısı olduğunu unutmayın. –

+0

Paylaşım çerezleri ile ilgili olarak, her bir iş parçacığı için bile mümkün olduğunu düşünmüyorum. Oturum, WebBrowser örnekleri için işlem başına paylaşılır. İşte benzer bir [soru] (http://stackoverflow.com/questions/18055734/net-webbrowser-control-and-dispose/18057266#18057266). – Noseratio