C # HttpWebRequest CookieContainer / Collection persistente tra le istanze di Object?
-
27-10-2019 - |
Domanda
Ho riscontrato un problema con il mio programma di accesso.Se effettuo l'accesso una volta, quindi null CookieContainer e CookieCollection (insieme alla mia classe http), quindi tento di accedere di nuovo, invia ancora i cookie dalla prima richiesta.Perché i biscotti restano in giro?
Esempio:
HTTP uh;
MainWindow()
{
uh = new HTTP();
uh.login("mySite");
//Logging in....
//Login Successful.....
uh.cookieContainer = null;
uh.cookieCollection = null;
uh = null;
uh = new HTTP();
uh.loging("mySite");
//Logging in, with cookies from first login
//Login Fails.....
}
EDIT: rappresentazione approssimativa della classe HTTP ...
public class HTTP()
{
public CookieContainer cookieContainer;
public CookieCollection cookieCollection;
private HttpWebRequest Request;
private HttpWebResponse Response;
public HTTP()
{
this.cookieContainer = new CookieContainer();
this.cookieCollection = new CookieCollection();
}
public HttpWebResponse login(string url)
{
string[] cred = new string[2] { "un", "pw" };
this.Request = (HttpWebRequest)HttpWebRequest.Create(url);
this.Request.CookieContainer = cookieContainer;
byte[] ByteArray = Encoding.UTF8.GetBytes(String.Format("un={0}&pw={1}", cred));
this.Request.ContentLength = ByteArray.Length;
Stream DataStream = this.Request.GetRequestStream();
DataStream.Write(ByteArray, 0, ByteArray.Length);
DataStream.Close();
Response = (HttpWebResponse)this.Request.GetResponse();
this.cookieCollection = Response.Cookies;
return Response;
}
public bool responseHandle(HttpWebResponse r)
{
//Determines success, logs headers, html body, etc..
}
}
MODIFICA |SOLUZIONE:
Non ci sono stati problemi con il codice precedente.Ho commesso lo stupido errore di non mettere il HTTP
null / new code nel mio pulsante di logout.Quindi non è mai stato ripristinato.Scusa per aver perso tempo a tutti.
Soluzione
Fai scadere il cookie quando hai finito e scomparirà.(AKA, imposta la data di scadenza su un tempo trascorso).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow