2013-11-28 27 views
5

Sto usando ASP.Net 3.5 con C#, Sviluppo ID: Visual Studio 2008. Quando sto usandole informazioni sullo stato della sessione non è valido e potrebbe essere danneggiato in ASP.Net

Session["FileName1"] = "text1.txt" 

si sta lavorando bene, ma poi sto usando

number1=17; 
string FileName1="FileName1" + number1.toString(); 

quindi impostando con

Session[FileName1]="text1.txt"; 

mi dà errore di runtime

012.

L'informazione stato della sessione non è valido e potrebbe essere danneggiato a System.Web.SessionState.SessionStateItemCollection.Deserializer (lettore BinaryReader)

Qualcuno può risolvere il mio problema, quando sto usando stringa nel Session variabile? Ricorda che funziona sulla mia macchina di sviluppo (che significa Visual Studio locale) ma quando viene distribuito sul server dà un errore citato.

enter image description here

+0

Funziona sul mio studio visiva locale, ma dà errore sul mio server in cui lo sto distribuendo. –

+4

try 'string FileName1 =" text1.txt "+ Guid.NewGuid(). ToString();' 'Session.Add (FileName1," text1.txt ");' – Fred

+0

Potrebbe includere una traccia stack di questa eccezione? –

risposta

5

Assicurarsi che la variabile NomeFile1 non è nullo prima di tentare di accedervi tramite la sintassi Session [NomeFile1] ...

Ecco un link a qualcun altro che stava avendo lo stesso problema: http://forums.asp.net/t/1069600.aspx

Ecco la sua risposta:

Nel codice, ho trovato la seguente riga:

//some code 
Session.Add(sessionVarName, sessionVarValue); 
//some other code 

Apparentemente, a causa di alcuni dati sporchi, c'è un momento in cui sessionVarName è nullo.

Session.Add non genera alcuna eccezione in questo caso e se la modalità di sessione è "InProc", non ci saranno problemi. Tuttavia, se la tua modalità di sessione è "SQLServer", durante la deserializzazione della memoria della sessione , avrai l'eccezione che ho ricevuto.Così, per filtrare i sporchi dati , ho modificato il codice di diventare:

if (sessionVarName != null) 
{ 
    //somecode 
    Session.Add(sessionVarName, sessionVarValue); 
    //some other code 
} 
0

Controllare i valori prima di riporli in sessione possono causare questa eccezione durante la deserializzazione del file di sessione, filtrare i dati. Controllare Here

if(!string.IsNullOrEmpty(FileName1)) 
{ 
    Session.Add(FileName1, "text1.txt"); 
} 

Oppure verificare la presenza di caratteri non validi nella stringa.

+0

non funziona ..! È sbagliato –

+0

@VaibhavParmar Qual è la modalità di sessione-stato? –

+0

Ho usato la modalità stato sessione in-proc –

2

il motivo del vostro errore è

xyz = new Guid() is also xyz= Guid.Empty; 

in modo che quando si tenta di convertire in stringa è l'errore tiro.

basta modificare il codice qualcosa del genere.

Guid guId = System.Guid.NewGuid(); 
string x = guId .ToString(); 
string FileName1="text1.txt" + x; 
Session[FileName1]="text1.txt"; 
+0

Spiacente ho modificato Non sto usando Guid sto usando intero dico "FileName1" + numero –

+0

penso che il tuo problema in questa riga ---- stringa FileName1 = "FileName1" + numero1 ; sarà stringa FileName1 = "FileName1" + number1.toString(); se hai un'altra query puoi chiedere. –

+0

Non risolve il mio problema –

-1

È possibile aggiungere il valore nella sessione di come non

string FileName1="FileName1" + number1.toString(); 

if(!string.IsNullOrEmpty(FileName1)) 
{ 
    Session.Add(FileName1, "text1.txt"); 
}