Domanda

lato server codice VB ASP su una macchina Windows 2003, asp.net 2.0 * installato. Stiamo avendo un problema strano in cui la prima volta che un utente si collega al sito web, il Session_OnStart nei fuochi Global.asa, ma l'oggetto della sessione è nullo. Qualcosa di semplice come:

Session.Timeout = 30

provoca il seguente errore: L'oggetto richiesto: 'Session'

Il sito web è stato 'creato' nella scheda Gestione IIS Home directory e sessioni sono abilitata nella pagina di configurazione per il sito.

Nella maggior parte dei casi, l'oggetto di sessione esiste se l'utente aggiorna la pagina. Ma quella prima visita per un utente unico provoca sempre l'errore.

Suggerimenti? Il codice non ha un errore, come ha funzionato sul vecchio sistema Win2000.

Giusto per ribadire: Windows Server 2003, in esecuzione IIS6, con .Net 2.0 installato. Sito Web è in esecuzione come applicazione, non è una directory virtuale.

È stato utile?

Soluzione

capito il problema. E 'stato a causa di avere più di un lavoratore in piscina app utilizzata per il sito web. Dal momento che non vi era alcuna garanzia che il processo di lavoro avrebbe gestire la richiesta di un cliente, e ogni processo di lavoro creerebbe di essa la propria istanza di sessione del client, la sessione sarebbe sceso e ricreato quando IIS ha deciso che un processo di lavoro diversa deve gestire una richiesta. Problema è stato risolto utilizzando un solo processo di lavoro nel pool di app, e ottenere tutti gli altri siti fuori dalla piscina app e in proprio.

Ora sto cercando un modo per avere più lavoratori in piscina app, ma per avere il bastone cliente con il processo di lavoro. Ma questo è un problema diverso che io ricerco.

Altri suggerimenti

Piuttosto un problema interessante.

Sappiamo che quando la sessione è esplicitamente abbandonato o eventualmente in timeout è prontamente distrutto. Vorrei aggiungere il codice come il seguente, al fine di garantire che non possa succedere.

If Session("test") Is Nothing Then
    Response.Redirect("Whatever.asp")
End If

Si potrebbe anche chiamare il codice che crea gli oggetti in questo blocco; in questo modo, se si rileva che la sessione è stata in qualche modo distrutto, si potrebbe ricrearli.

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