Session persa

mercoledì 28 gennaio 2009 - 11.03

patrizia84 Profilo | Junior Member

Ciao a tutti.
Nella mia applicazione ho un gridview dove visualizzo dei file.
Memorizzo i file presenti nel gridview in una sessione.
Quando vado a cancellare il file grazie al comando delete del grid perdo la sessione.


In che modo posso non perderla?

Ho pensato di memorizzare i file in un attributo privato senza utilizzare la sessione.

Qualcuno a qualche consiglio?
Grazie a tutti.

rossimarko Profilo | Guru

Ciao,

puoi farci vedere il codice con cui accedi alla sessione?

PS: se usi un attributo privato ad post perderai i dati quindi non penso sia la soluzione
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

patrizia84 Profilo | Junior Member

Ciao..
Scusate :per qualcuno a qualche consiglio? (a senza h ).
Se inizializzo l'attributo privato solo se non è un post della pagina e dopo l'aggiornamento dell'attributo lo faccio nella gestione degli eventi del grid,perchè perdo il valore dell'attributo ?
Scusate i miei dubbi!!!

Il codice dovrebbe essere giusto perchè l'errore della sessione mi appare solo quando faccio più di una cancellazione del file.
Comunque in questo accedo alla sessione:


DataSet DSDoc = (DataSet)Session["dataSetRisorsa"];



rossimarko Profilo | Guru

L'attributo lo perdi perchè le variabili che dichiari all'interno della classe vengono perse ad ogni postback. Considera che ogni post dalla pagina al server consiste in una nuova istanza della classe e quindi tutti i valori vengono azzerati.

La session, il viewstate e gli altri oggetti servono appunto per evitare di perdere i dati tra un post e l'altro (http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx)

Tornando alla session, che errore ti restituisce quando tenti di accederci? Ti torna un oggetto null?

Ti consiglio di fare delle verifiche:
- Quand'è che popoli l'oggetto della session?
- Hai già verificato con dei breakpoint che il flusso sia corretto (Inserimento in session al primo caricamento e poi caricamento dei dati durante i vari post back degli aventi) ?
- Ogni volta che compili fai ripartire la pagina dall'inizio? (la compilazione spesso comporta la perdita di tutti i dati perchè il processo viene riavviato)
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

patrizia84 Profilo | Junior Member

Grazie per i consigli ma ho già provato con dei breakpoint e il flusso è corretto,la sessione viene creata ed aggiornata nel modo giusto.
L'errore che mi restituisce è che la sessione è vuota.
Può darsi che si azzeri perchè vado a cancellare un file che si trova in una cartella nella stessa directory dell'applicazione asp.net.?

rossimarko Profilo | Guru

Non dovrebbe.. Che tipo di file cancelli?

Prova ad intercettare nel global.asax l'evento SessionEnd per vedere se effettivamente viene buttata giù.

Hai altre variabili nella sessione? Anche quelle perdono i valori?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

patrizia84 Profilo | Junior Member

I file sono immagini quindi .gif, .png, .jpeg, .jpg e non ho altre variabili nella sessione.
Ho intercettato l'evento Session_End nel global.asax quindi perdo la sessione... .

Provo con viewstate.. può essere una soluzione?

rossimarko Profilo | Guru

Se metti nel viewstate devi considerare che ad ogni postback i dati vengono passati avanti e indietro quindi occupi della banda. Se non sono molti si può fare ma se sono un po' non ti conviene.

Più che altro bisogna capire perchè scade così velocemente.. Hai verificato che non venga chiamato session.abandon o il logout da qualche parte per sbaglio? Il timeout è di 20 minuti?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

patrizia84 Profilo | Junior Member

Si ho controllato non c è ne Session.Abandon e nè fa il logout.

Forse provo con il viewstate tanto sono poche le informazioni che devo memorizzare.non cedo altre alternative...



rossimarko Profilo | Guru

Per adesso puoi provare, il problema è che se in futuro dovrai memorizzare altre informazioni avrai lo stesso problema.

Giusto per curiosità prova a commentare la parte che cancella i file e lascia solo la gestione del postback della griglia, tanto per capire se può essere quello.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

patrizia84 Profilo | Junior Member

Hai ragione!!prima o poi questo problema si ripresenta.

Ho provato a commentare e la cancellazione del file e la sessione non la perde...

rossimarko Profilo | Guru

I file sono nella root del sito?
Hai già provato a metterli in una sottocartella?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

patrizia84 Profilo | Junior Member

Si sono nella root del sito..Adesso provo a spostarli...

Evviva funziona...ho spostato i file in una cartella fuori dalla root del sito..
Grazie per l'aiuto!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5