SessionStateTempDataProvider需要启用SessionState

Mou*_*tte 6 asp.net-mvc

我的混合(Web窗体/ MVC)项目在我的本地开发环境中工作正常但是当我将(xcopy)部署到我的Test环境时,我得到了需要SessionState的错误(完整错误如下所示).

这个错误消息的奇怪之处在于我的web.config 中的会话状态被设置为InProc,而IIS7配置也显示它.

我正在运行一个经典的Web表单站点,只有一个小部分,我正在转移到MVC 1.0.现在我的常规网络表单default.aspx页面无法启动!

  • 根本没有在MVC中使用TempData提供程序,所以我猜测框架确实出于某种原因但是,我的SesionState已启用...
  • 我的测试环境在集成模式的IIS 7上运行,我的webconfig使用sessionstate作为InProc并且工作正常.

更多信息:为了好玩,我创建了一个只有MVC的存根项目,并将其部署到测试环境,它工作正常!在web.config中的基本相同,一个作品和其他没有.

任何帮助表示赞赏.


错误信息

'/'应用程序中的服务器错误.

SessionStateTempDataProvider需要启用SessionState.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.异常详细信息:System.InvalidOperationException:SessionStateTempDataProvider要求启用SessionState.源错误:在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:

[InvalidOperationException:SessionStateTempDataProvider要求启用SessionState.] System.Web.Mvc.SessionStateTempDataProvider.LoadTempData(ControllerContext controllerContext)+247928 System.Web.Mvc.TempDataDictionary.Load(ControllerContext controllerContext,ITempDataProvider tempDataProvider)+30 System.Web.Mvc .Controller.ExecuteCore()+71 System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext)+209 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+599 System.Web.HttpApplication.ExecuteStep( IExecutionStep step,Boolean&completedSynchronously)+171

Mou*_*tte 12

谷歌解决:我将此属性添加到web.config中的模块节点,并且一切神奇地开始工作:

<modules runAllManagedModulesForAllRequests="true">

看起来我并不孤单:

http://forums.asp.net/p/1293974/2509190.aspx

http://www.flyvergrillen.dk/2009/03/26/being-trapped-in-iis/

我认为我的纯MVC项目(在Test环境中工作)过于简单,可能没有强制MVC框架要求TempData和SessionState,所以我将如何解释它;-)


小智 5

我有同样的问题,当然得到同样的错误.即使我不需要我的MVC应用程序的Session状态,我只是对启动和运行应用程序感兴趣所以愿意启用会话状态......为什么不呢!

即使将会话状态设置添加到我的web.config文件后,

<system.web>...<sessionState mode="InProc" />...</system.web>
Run Code Online (Sandbox Code Playgroud)

我继续得到相同的错误消息....非常混乱!

我发现了以下解释,这是该问题的最终解决方案.在集成模式下运行应用程序池时,必须确保IIS已定义会话状态模块映射.