Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    errore nel ASP.global_asax.Session_End

    Dato questo codice
    codice:
    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    	'Return
    	' Generato alla fine della sessione
    	Application.Lock()
    
    	Dim asd As List(Of String) = TryCast(Application("utenti_collegati"), List(Of String))
    	If asd IsNot Nothing Then
    		Dim utente As String = TryCast(Session("utente"), String)
    		If utente IsNot Nothing Then
    			asd.Remove(utente)
    			Application.Remove("utenti_collegati")
    			Application.Add("utenti_collegati", asd)
    		End If
    	End If
    
    	Application.UnLock()
    End Sub
    ottengo l'errore 'Object reference not set to an instance of an object'

    mi aiutate a capire dove sbaglio?

    Pietro

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    uhm...ma in debug sei andato, per vedere quale degli oggetti ti da' problemi ?

    ps: tanto per curiosita', a cosa serve la suddetta procedurina ?

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da djciko
    uhm...ma in debug sei andato, per vedere quale degli oggetti ti da' problemi ?

    ps: tanto per curiosita', a cosa serve la suddetta procedurina ?

    Ebbene, questa procedura non dà apparentemente errore.
    Andando a vedere il visualizzatore eventi del server ho notato degli avvisi, del tipo detto:
    Informazioni eccezione:
    Tipo di eccezione: NullReferenceException
    Messaggio eccezione: Riferimento a un oggetto non impostato su un'istanza di oggetto.
    in ASP.global_asax.Session_End(Object sender, EventArgs e) in c:\Documenti\Visual Studio 2010\Projects\xxx\xxx\global.asax:riga 112
    lo scopo della routine è evidente: creo una lista di utenti popolata nel login, e svuotata allo scadere della sessione.

    Il codice mi pare corretto... ma l'errore c'è

    Pietro

  4. #4
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    la sparo li (anche se credo che le membership api abbiano già queste funzionalità all'interno)

    forse la sessione già non esiste piu ... vedi qui

    codice:
    TryCast(Session("utente"), String)
    e ti da il nullpointerexception anche se è dentro un TryCast perchè questa eccezione viene lanciata prima della procedura TryCast

    sarebbe bello capire anche quale sia la riga 112 ;D

    facci sapere


    ps.

    per vedere devi controllare se Session è uguale a null perche in tal caso Session["xxx"] da nullpointerexception

    se è questo il problema mi viene in mente di ridefinire il metodo dispose() della classe che ti rappresenta l'utente dentro la sessione.

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    questa istruzione

    Dim s As String = TryCast(Session("xyz"), String)

    non dà errore (TryCast è stata inventata per questo)

    debbo però controllare che s non sia nothing (null)

    Dim utente As String = TryCast(Session("utente"), String)
    If utente IsNot Nothing Then ***

    perciò ci deve essere un errore più sottile che proprio mi sfugge

    comunque mi piacerebbe proprio risolvere il problema

    ciao
    Pietro

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Alle volte l'errore non e' dove lo segnala
    Magari è all'esterno, il FW non e' perfetto

  7. #7
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    certo il trycast sopprime l'eccezione ma è anche vero che i parametri di una funzione vengono valutati prima che questa entri in azione ....

    detto questo non so se il problema sia della variabile Session o in qualche altra parte del codice .. ma leggendolo cosi' ad occhio mi pareva l'unico punto debole.

    Ad esempio se Session["utente"] non esiste allora l'istruzione torna null ed il trycast entra in azione ma se l'oggetto Session è a null allora l'istruzione Session["utente"] andrà a generare un'eccezione di quel tipo ( non lo ho testato ma credo che in linea di principio funzioni cosi ).... mi spiace pietro di non poter provare il codice in questo momento ma se ho un pochettino di tempo lo traduco in C# e lo testo un po.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.