ASP.NET 2.0:为什么我的类在我的本地机器上运行时可以访问Session对象,但是当我将它部署到服务器时却不能访问它?

时间:2011-03-16 17:10:02

标签: asp.net iis session asp.net-2.0

我有一个自定义MembershipProvider,我在ASP.NET 2.0应用程序中使用。在扩展成员资格提供程序的类中,我有一个名为AttemptLogin()的函数,如果用户有效,它会设置会话变量。在该函数内部,有许多会话变量赋值,类似于以下内容:

HttpContext.Current.Session["id"] = "12345";
global.asax中的AttemptLogin()函数正在调用

Application_BeginRequest。当我在visual studio中打开它时,此代码工作正常,然后通过单击“开始调试”在内置开发服务器中运行它。但是,当我将它部署到我们的测试服务器(在32位模式下运行IIS的Windows 2003 Server 64位)时,执行在到达上面的代码时会中断,从而给出以下消息:

[NullReferenceException: Object reference not set to an instance of an object.]
   CustomMembershipProvider.AttemptLogin() in c:\Inetpub\wwwroot\Josh\App_Code\CustomMembershipProvider.cs:1097
   ASP.global_asax.Application_BeginRequest(Object sender, EventArgs e) in c:\Inetpub\wwwroot\Josh\Global.asax:14
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

如何在这种情况下成功访问会话状态?为什么它在本地工作而不在服务器上工作?

2 个答案:

答案 0 :(得分:1)

在Application_BeginRequest中无法使用会话变量你应该通过处理global.asax中的Application_AcquireRequestState来查看管道中的后续内容,我真的很困惑为什么你的dev框没有得到空引用

答案 1 :(得分:0)

检查服务器上的web.config文件,确保启用了sessionState模式

<sessionState mode="InProc" />