Sto usando Geckfx22.0
e xulrunner22.0
. Poiché GeckoWebBrowser in .Net condivide i cookie con tutte le altre istanze di GeckoWebBrowsers, vorrei che GeckoWebBrowser abbia il proprio contenitore di cookie che non condivide alcun cookie creato precedentemente in altri GeckoWebBrowser o in altre istanze.È possibile? GeckoFX può utilizzare CookieContainer separato per istanza?
Ad esempio, quando creo un GeckoWebBrowser non dovrebbe avere alcun cookie. E quando eseguo 2 istanze di GeckoWebBrowser hanno il loro contenitore di cookie e non condividono o non interagiscono tra loro.
Com'è possibile?
Ho provato vari modi possibili creando classi diverse e avviando geckofx
ma quando si esegue un browser diverso contemporaneamente si condividono i cookie tra altri browser. Se rimuovo i cookie da un browser, lo stesso accade per altri browser. Ho iniziato il proxy
e useragent
in momenti diversi e il suo funziona, ma non posso applicare vari useragent per più browser contemporaneamente.
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;
}
}
E per rimuovere i cookie che sto utilizzando codice seguente:
nsICookieManager CookieMan;
CookieMan = Xpcom.GetService<nsICookieManager>("@mozilla.org/cookiemanager;1");
CookieMan = Xpcom.QueryInterface<nsICookieManager>(CookieMan);
CookieMan.RemoveAll();
aiuto sarà apprezzato !!!
si può solo spiegare? – yasmuru
La demo più semplice su come sostituire il servizio Xpcom "@ mozilla.org/cookieService; 1". (Ho il sospetto che si possa fare lo stesso per cookiemanager; 1 o forse cookiemanager funziona usando il cookieService). Funziona come questo TestCookieServiceFactory crea una nuova implementazione di "@ mozilla.org/cookieService; 1". (Il lavoro effettivo è delegato a una classe TestCookieService che implementa l'interfaccia nsICookieService.) Quindi il prima possibile all'avvio del programma (ovvero dopo XpCom.Init) viene chiamato TestCookieServiceFactory.Unregister() per rimuovere il servizio predefinito, quindi chiamare Register() per installarne uno nuovo. – Tom
Grazie per la tua risposta, proverò che .. – yasmuru