具有SessionStateTempDataProvider类的MVC3控制器错误中的TempData []用法要求启用会话状态

时间:2012-05-01 17:23:42

标签: asp.net asp.net-mvc-3

我正在尝试在mvc3控制器中使用TempData [],我遇到了以下错误:

  

SessionStateTempDataProvider类需要会话状态   启用。

以下是在webconfig中设置的(不是我的代码或项目),但是......

<modules runAllManagedModulesForAllRequests="true">
  <add name="Custom http Module" type="CustomHttpModule" />
</modules>

其中CustomHttpModule:

public class CustomHttpModule: IHttpModule

这是我可以更改或可能在此CustomHttpModule类中定义的配置设置吗?

1 个答案:

答案 0 :(得分:2)

如果您希望能够从HTTP模块访问会话,请确保您的模块实现IRequiresSessionState标记接口:

public class CustomHttpModule: IHttpModule, IRequiresSessionState
{
    ...    
}

同样在web.config中,请确保session state已启用:

<sessionState mode="InProc" />

当然,您在此处指定的模式取决于设置和要求。例如,如果您在Web场中运行,则在内存中存储会话数据可能容易出错,因为Web场的每个节点都将存储其自己的会话,并且不可能进行共享。在这种情况下,您可能需要考虑一些其他模式,使您能够在服务器场的节点之间共享会话。