2013-11-28 3 views
5

Я использую ASP.Net 3.5 с C#, Разработка ID: Visual Studio 2008. Когда я используюСостояние сеанса информация недействительна и может быть поврежден в ASP.Net

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

он работает отлично, но тогда я использую

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

затем установить с

Session[FileName1]="text1.txt"; 

дает мне ошибки во время выполнения

Информация о состоянии сеанса является недействительной и может быть повреждена на System.Web.SessionState.SessionStateItemCollection.Deserializer (BinaryReader читатель)

Может кто-нибудь решить мою проблему, когда я использую строку в Session переменная? Помните, что это работает на моей машине разработки (что означает локальная Visual Studio), но при развертывании на сервере она дает указанную ошибку.

enter image description here

+0

Он работает на моей местной визуальной студии, но это дает на моем сервере, где я его развертываю. –

+4

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

+0

Не могли бы вы включить трассировку стека этого исключения? –

ответ

5

Убедитесь, что переменная имя_файла1 не равно нулю, прежде чем пытаться получить доступ к нему через [имя_файла1] синтаксиса Session ...

Вот ссылка на кого-то еще, что было с той же проблемой: http://forums.asp.net/t/1069600.aspx

Вот его ответ:

В коде, я нашел следующую строку:

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

По-видимому, из-за некоторых грязных данных, есть время, когда sessionVarName - null.

В этом случае Session.Add не будет создавать никаких исключений, и если ваш сеанс «InProc», проблем не будет. Однако, если ваш режим «SQLServer», во время десериализации сеанса вы получите исключение, которое я получил.Таким образом, чтобы отфильтровать грязные данные, я изменил код, чтобы стать:

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

Проверьте значения перед сохранением их в сессии они могут вызвать это исключение во время десериализации магазина сеанса, фильтр данных. Проверить Here

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

Или проверить недопустимых символов в строке.

+0

его не работает ..! Его неправильный –

+0

@VaibhavParmar Каков режим сеансового состояния? –

+0

Я использовал режим состояния сеанса In-proc –

2

причина вашей ошибки

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

поэтому при попытке преобразовать в строку это бросок ошибка.

просто измените код таким образом.

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

Извините, я изменил. Я не использую Guid. Я использую целое число «FileName1» + number –

+0

. Я думаю, ваша проблема в этой строке ---- строка FileName1 = «FileName1» + number1 ; это будет строка FileName1 = "FileName1" + number1.toString(), если у вас есть другой запрос, который вы можете задать. –

+0

Это не решает мою проблему –

-1

Вы можете добавить значение в сессии Как это

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

if(!string.IsNullOrEmpty(FileName1)) 
{ 
    Session.Add(FileName1, "text1.txt"); 
} 
Смежные вопросы