2013-11-28 44 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

尝试'string FileName1 =“text1.txt”+ Guid.NewGuid()。ToString();''Session.Add(FileName1,“text1.txt”);' – Fred

+0

您可否包含此异常的堆栈跟踪? –

回答

5

确保FILENAME1变量不是试图通过会话[FILENAME1]语法访问之前空...

下面是别人说有同样问题的链接: http://forums.asp.net/t/1069600.aspx

下面是他的回答:

在代码中,我发现下面一行:

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

显然,由于某些脏数据,有一段时间 sessionVarName为空。

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

我已经使用进程内会话状态模式 –

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”+号码 –

+0

我认为你的问题在这一行----字符串FileName1 =“FileName1”+ number1 ;它将是字符串FileName1 =“FileName1”+ number1.toString();如果你有另一个查询,你可以问。 –

+0

它不能解决我的问题 –

-1

您可以添加值到会话像这样

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

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