Ich verwende Geckfx22.0
und xulrunner22.0
. Da GeckoWebBrowser in .Net Cookies mit allen anderen Instanzen von GeckoWebBrowsers teilt, möchte ich, dass ein GeckoWebBrowser einen eigenen Cookie-Container hat, der keine Cookies enthält, die zuvor in anderen GeckoWebBrowsers oder anderen Instanzen erstellt wurden.Ist das möglich? GeckoFX kann separate CookieContainer pro Instanz verwenden?
Zum Beispiel, wenn ich einen GeckoWebBrowser erstellen, sollte es keine Cookies haben. Und wenn ich 2 Instanzen von GeckoWebBrowser benutze, haben sie ihren eigenen Cookie-Container und teilen keine oder Konflikt-Cookies miteinander.
Wie ist das möglich?
Ich habe verschiedene Möglichkeiten versucht, indem Sie verschiedene Klassen erstellen und geckofx
initiieren, aber wenn verschiedene Browser zur gleichen Zeit laufen, teilen sie Cookies unter anderen Browsern. Wenn ich Cookies von einem Browser entferne, passiert das auch für andere Browser. Ich habe die und useragent
zu verschiedenen Zeiten initiiert und es funktioniert, kann aber nicht verschiedene Userages für mehrere Browser gleichzeitig anwenden.
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;
}
}
Und Cookies entfernen i folgenden Code verwenden bin:
wirdnsICookieManager CookieMan;
CookieMan = Xpcom.GetService<nsICookieManager>("@mozilla.org/cookiemanager;1");
CookieMan = Xpcom.QueryInterface<nsICookieManager>(CookieMan);
CookieMan.RemoveAll();
Hilfe geschätzt werden !!!
können Sie es nur erklären? – yasmuru
Der Unittest zeigt, wie der Xpcom-Dienst "@ mozilla.org/cookieService; 1" ersetzt werden kann. (Ich vermute, dass man dasselbe für den Cookie-Manager tun könnte; 1 oder vielleicht funktioniert der Cookie-Manager mit dem cookieService). Es funktioniert wie diese TestCookieServiceFactory erstellt eine neue Implementierung von "@ mozilla.org/cookieService; 1". (Die eigentliche Arbeit wird an eine TestCookieService-Klasse delegiert, die die nsICookieService-Schnittstelle implementiert.) Dann wird so früh wie möglich beim Programmstart (dh nach XpCom.Init) TestCookieServiceFactory.Unregister() aufgerufen, um den Standarddienst zu entfernen, und dann Register() aufrufen um ein neues zu installieren. – Tom
Danke für Ihre Antwort, ich werde versuchen, dass .. – yasmuru