Domanda

Spero che qualcuno possa chiarire questo comportamento per me e spiegare come ASP.NET sta decidendo quando trattare qualcosa come una nuova sessione.

A) In Internet Explorer carico il sito ASP.NET in questione. Inizia una nuova sessione.
B) Se vado al menu File - Nuova finestra ... rimarrà nella stessa sessione.
C) Se lancio una nuova istanza di Internet Explorer e carico la stessa pagina, inizia una nuova sessione.

Sono confuso dal passaggio C. Mi aspetto che sia la stessa sessione in base al mio IP remoto.
Cosa sta facendo IIS / ASP.NET per decidere che si tratta di una nuova sessione? Sta guardando la mia porta remota che sta usando la nuova istanza di IE? Quando si avvia una nuova finestra con File - Nuovo, utilizza la stessa porta remota del genitore.

È stato utile?

Soluzione

Le sessioni in IIS / ASP.NET si basano su cookie con un ambito di sessione, il che significa che vengono distrutte alla chiusura del browser e apparentemente non sono condivise all'interno di diversi processi di Internet Explorer.

Quando apri una nuova finestra del browser con File > Nuova finestra, la finestra verrà gestita con lo stesso processo del primo (ovvero lo stesso iexplorer.exe). Quando si lancia IE dal menu Start, si ottiene un nuovo processo e ora si avranno due iexplorer.exe nel Task Manager. Penso che solo IE 7 genererà più processi.

Come nota a margine, IE 8 avrà un singolo processo per scheda / finestra, come ha fatto Google Chrome. Non so se questi browser condividano i cookie di sessione tra i processi, ma è certamente qualcosa da tenere a mente quando testano usando uno di questi browser.

Altri suggerimenti

Per impostazione predefinita, ASP.NET tiene traccia delle sessioni tramite i cookie. Una nuova istanza di IE non ha il cookie di sessione, risultante in una nuova sessione. Tuttavia, usando File - > Nuova finestra da una finestra IE esistente creerà una nuova finestra con gli stessi cookie del "genitore", consentendo ad ASP.NET di utilizzare la sessione esistente.

Mi chiedo se la nuova istanza di IE avrebbe gli stessi cookie che accadono nel caso B, mentre mentre è una nuova finestra sta usando lo stesso processo. Di solito è nel cookie o nella stringa di query che esiste un valore utilizzato per mappare le sessioni a vari client.

Sembrerebbe che i dati della sessione vengano memorizzati nella cache per processo. A) e B) esistono nello stesso processo, mentre il lancio di una nuova istanza di IE creerà un nuovo processo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top