11.886 messaggi dal 09 febbraio 2002
Contributi
pistelli2001 ha scritto:

se forzo il nome... Funziona

Benissimo, dai che manca poco.

A proposito dell'errore, controlla che HttpContext.Current.Session non sia Nothing. Metti questa come prima riga della Function che gestisce l'evento PostAcquireRequestState.
'L'istruzione return arresterà subito l'esecuzione della Function, se la sessione dovesse essere null
If (HttpContext.Current.Session Is Nothing) Then Return Nothing

Però bisognerebbe capire perché la sessione è null... se col debugger ti rendi conto che lo è sempre, allora prova a gestire l'evento PreRequestHandlerExecute anziché il PostAcquireRequestState.
Inoltre puoi provare i suggerimenti che trovi qui.
http://stackoverflow.com/questions/276355/can-i-access-session-state-from-an-httpmodule

ciao
Modificato da BrightSoul il 08 novembre 2012 23.26 -

Enjoy learning and just keep making
37 messaggi dal 19 settembre 2010
Stesso errore sulla riga
If HttpContext.Current.Session Is Nothing Then return nothing
credo ci ritorni su dopo il return nothing infatti
succede una cosa strana. Ad esempio se uso Dim nomefile = "Arc0001"
al posto di dim nomefile = HttpContext.Current.Session("Database").ToString
funziona ma entra ed esce dalla classe un ventina di volte alternardosi con il modulo edmx in questo punto
''' <summary>
''' Inizializzare un nuovo oggetto DatabaseEntities.
''' </summary>
Public Sub New(ByVal connectionString As String)
MyBase.New(connectionString, "DatabaseEntities")
MyBase.ContextOptions.LazyLoadingEnabled = true
OnContextCreated()
End Sub

andando passo passo devo pigiare 2 volte f8 sulla stessa istruzione dopo il primo passaggio per andare avanti e la connection ritorna al databse originale per poi ripassarci e sistemrlo di nuovo. Forse e' meglio il copia ed incolla della prima soluzione data?

Grazie per la pazienza!
Modificato da pistelli2001 il 09 novembre 2012 18.13 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

pistelli2001 ha scritto:

entra ed esce dalla classe un ventina di volte

Penso che sia normale. Se la tua applicazione gira in modalità integrata, allora l'HttpModule andrà in esecuzione per ogni richiesta, anche quelle a file statici, come immagini JPG o file CSS.
Dobbiamo impedire che questo succeda; coraggio, proviamo ad andare avanti.

La riga che ti avevo inviato nel post precedente va mantenuta ma prima devi mettere altre due righe. Eccole tutte e tre insieme.
'La richiesta corrente supporta la sessione? Devo controllarlo in questo modo:
Dim gestore = HttpContext.Current.Handler
If Not (TypeOf gestore Is IReadOnlySessionState Or TypeOf gestore Is IRequiresSessionState) Then Return Nothing
'Poi, appurato che in questa richiesta posso leggere i dati di sessione, controlliamo che la sessione non sia null.
If (HttpContext.Current.Session Is Nothing) Then Return Nothing


Aggiungi anche questa direttiva in cima al file:
Imports System.Web.SessionState


Se dovesse ancora andare in errore, posta il testo esatto dell'eccezione.

ciao
Modificato da BrightSoul il 09 novembre 2012 23.17 -

Enjoy learning and just keep making
37 messaggi dal 19 settembre 2010
Ancora farina nel mio sacco e ti ringrazio, mi ripasso il codice passo passo. Comunque anche cosi non va allora ho aggiunto una riga
Dim gestore = HttpContext.Current.Handler
If gestore.ToString = "ASP.login_aspx" Then Return Nothing

e funziona.

Come vedi poiche' la sessione viene avvalorata nel codice vb della pagina di login faccio uscire la function se la pagina e' quella di login e continuo il ciclo se il gestore contiene altre pagine che hanno la seesion avvalorata.

Che dici?
Ancora grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
pistelli2001 ha scritto:
Come vedi faccio uscire la function se la pagina e' quella di login. Che dici?

Va benissimo, direi che siamo arrivati a dama :) Farei giusto un ritocchino perché, se possibile, è preferibile che il controllo sulla pagina di login venga fatto usando il tipo, anziché una stringa. Se per qualche motivo, in futuro, il tipo della pagina dovesse cambiare, ti ricorderai che va cambiato anche nell'HttpModule, perché Asp.Net ti segnalerà un errore.
If TypeOf gestore Is ASP.login_aspx Then Return Nothing


prego e buona domenica!
Adesso prova ad implementare la seconda parte dell'articolo di Daniele, quella che ti facilita l'accesso al DatabaseEntities (se vuoi, ovviamente).

Enjoy learning and just keep making
37 messaggi dal 19 settembre 2010
ancora grazie della disponibilita' , certo ora con tutta calma ci provo nella speranza di non chiedere alcun aiuto. Ciao e ancora grazie
37 messaggi dal 19 settembre 2010
Riprendo questo post in quanto volevo utilizzare questa classe nuovamente. Non so cosa possa essere successo ma il vecchio codice del vecchio progetto funziona correttamente mentre ricopiando il tutto su di un nuovo progetto mi da errore in questa riga quando passo il costruttore

HttpContext.Current.Items("DatabaseEntities") = New DatabaseEntities(connString)

(connstring) "Public sub new troppi argomenti"


Grazie e Buona Giornata
37 messaggi dal 19 settembre 2010
mi rispondo da solo Generato stub

Grazie a tutti....

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.