繁体   English   中英

如何在ASP.NET MVC中的控制器之间传递数据?

[英]how to pass data between to controllers in asp.net mvc?

我试图使用TempData在控制器之间传递数据,当我运行我的项目时,出现以下错误:

  The SessionStateTempDataProvider class requires session state to be enabled. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace 

有关错误及其在代码中起源的更多信息。

  Exception Details: System.InvalidOperationException: The SessionStateTempDataProvider class requires session state to be 

已启用

这是我的web.config:

  <system.web>
    <customErrors mode="Off">
      <error statusCode="404" redirect="~/View/Shared/NotFountError"/>
      <error statusCode="500" redirect="~/View/Shared/InternalServerError"/>
    </customErrors>
    <authentication mode="None"/>
    <compilation debug="true" targetFramework="4.6.2"/>
    <httpRuntime targetFramework="4.5"/>
  <sessionState mode="InProc" />
  </system.web>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="10.00:00:00"/>
    </staticContent>
    <httpProtocol>
      <customHeaders>
        <remove name="Vary"/>
        <add name="Vary" value="Accept-Encoding"/>
      </customHeaders>
    </httpProtocol>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="FormsAuthenticationModule"/>
      <add name="SA.Filter.Filter" type="SA.Filter.Filter"/>
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
      <remove name="OPTIONSVerbHandler"/>
      <remove name="TRACEVerbHandler"/>
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>
    <directoryBrowse enabled="true"/>
  </system.webServer>

听起来您要在其上运行应用程序的服务器默认未启用会话状态。

您可以通过web.config在每个应用程序的基础上启用它,只需将其放置在文件中即可:

<system.web>
    ..
    <sessionState mode="InProc" />
</system.web>

这将启用存储会话状态(服务器端)的默认处理方法。

如果那没有帮助,则可能指向另一个问题,但我们需要查看完整的异常信息和堆栈跟踪。

Google Solved: I added this attribute to the modules node in the web.config and EVERYTHING magically started working:

<modules runAllManagedModulesForAllRequests="true">

It looks like I'm not alone:
Some sample Links are below for your reference.

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

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

I think my pure MVC project (that worked in Test environment) was too simple and may not have forced the MVC framework to require TempData and SessionState, so that's how I'll explain it away ;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM