Ho bisogno di accedere a un sito Web ed eseguire un'azione. Il sito web è il riposo basa in modo da poter facilmente accedere in questo modo (le informazioni di accesso è incluso come un querystring sull'URL, quindi ho dont't necessario impostare le credenziali):C# mantenendo la sessione su HTTPS sul client
CookieContainer cookieJar = new CookieContainer();
HttpWebRequest firstRequest = (HttpWebRequest) WebRequest.Create(loginUrl);
firstRequest.CookieContainer = cookieJar;
firstRequest.KeepAlive = true;
firstRequest.Method = "POST";
HttpWebResponse firstResponse = (HttpWebResponse)firstRequest.GetResponse();
che funziona e mi registra in. Ricevo un cookie per mantenere la sessione ed è memorizzato nel cookieJar mostrato sopra. Quindi faccio una seconda richiesta come questa:
HttpWebRequest secondRequest = (HttpWebRequest) WebRequest.Create(actionUrl);
secondRequest.Method = "POST";
secondRequest.KeepAlive = true;
secondRequest.CookieContainer = cookieJar;
WebResponse secondResponse = secondRequest.GetResponse();
E assicuro di assegnare i cookie alla nuova richiesta. Ma per qualche ragione questo non sembra funzionare. Ricevo un errore che mi diceva "la mia sessione è scaduta o è scaduta", e questo viene fatto uno dopo l'altro, quindi non è un problema di temporizzazione.
Ho usato Fiddler per esaminare le intestazioni HTTP ma sto trovando così difficile poiché questo è HTTPS. (So che posso decodificarlo ma non sembra funzionare bene.)
Posso prendere i miei URL per questo servizio di restazioni e incollarli in firefox e tutto funziona bene, quindi deve essere qualcosa che sto facendo sbagliato e non l'altra estremità della connessione.
Non ho molta familiarità con HTTPS. Devo fare qualcos'altro per mantenere la mia sessione? Pensavo che sarebbe stato il cookie, ma forse c'è qualcos'altro che devo mantenere tra le due richieste?
Ecco le intestazioni restituite quando invio nella prima richiesta (tranne ho cambiato il cookie per proteggere gli innocenti!):
X-DB-Content-length=19
Keep-Alive=timeout=15, max=50
Connection=Keep-Alive
Transfer-Encoding=chunked
Content-Type=text/html; charset=WINDOWS-1252
Date=Mon, 16 Nov 2009 15:26:34 GMT
Set-Cookie:MyCookie stuff goes here
Server=Oracle-Application-Server-10g
Qualsiasi aiuto sarebbe apprezzato, io sono a corto di idee.
Microsoft sembra aver risolto questo problema in .NET 4. – Kelly
Ciao Kelly, sto anche affrontando una sessione scaduta che potrebbe essere simile al tuo caso sopra, potresti dare un'occhiata a questo link: http://stackoverflow.com/ domande/22957840/scansione-sessione scaduta Grazie – bluewonder