我使用Geckfx22.0
和xulrunner22.0
。由於.Net中的GeckoWebBrowser與所有其他GeckoWebBrowsers實例共享cookie,我希望GeckoWebBrowser擁有它自己的cookie容器,它不會共享之前在其他GeckoWebBrowsers或其他實例中創建的cookie。這可能嗎? GeckoFX可以爲每個實例使用獨立的CookieContainer?
例如,當我創建一個GeckoWebBrowser時,它不應該有任何cookie。當我運行GeckoWebBrowser的2個實例時,他們擁有自己的Cookie容器,不會與其他人共享或衝突。
這怎麼可能?
我已經嘗試了各種可能的方法,創建不同的類並啓動geckofx
,但是當同時運行不同的瀏覽器時,它會在其他瀏覽器中共享Cookie。如果我從一個瀏覽器中刪除Cookie,其他瀏覽器也會發生這種情況。我在不同的時間和作品發起了proxy
和useragent
,但不能同時爲多個瀏覽器應用各種使用者權限。
public void Initiate()
{
Gecko.Xpcom.Initialize(AppDomain.CurrentDomain.BaseDirectory + "/xulrunner");
if (this.IsProxySet)
{
Gecko.GeckoPreferences.User["network.proxy.http"] = this.Host;
Gecko.GeckoPreferences.User["network.proxy.http_port"] = this.Port;
Gecko.GeckoPreferences.User["network.proxy.type"] = 1;
}
if (IsUseragentSet)
{
Gecko.GeckoPreferences.User["general.useragent.override"] = this.Useragent;
}
}
,並刪除我使用下面的代碼餅乾:
nsICookieManager CookieMan;
CookieMan = Xpcom.GetService<nsICookieManager>("@mozilla.org/cookiemanager;1");
CookieMan = Xpcom.QueryInterface<nsICookieManager>(CookieMan);
CookieMan.RemoveAll();
幫助將不勝感激!
你可以解釋一下嗎? – yasmuru
unittest演示如何替換Xpcom服務「@ mozilla.org/cookieService; 1」。 (我懷疑可以爲cookiemanager做同樣的事情; 1或者cookiemanager可以使用cookieService)。它像這樣工作TestCookieServiceFactory創建「@ mozilla.org/cookieService; 1」的新實現。 (實際工作委託給一個實現了nsICookieService接口的TestCookieService類)。然後儘可能在程序啓動時(即在XpCom.Init之後)調用TestCookieServiceFactory.Unregister()去除默認服務,然後調用Register()安裝新的。 – Tom
感謝您的回覆,我會盡力... – yasmuru