Asp.net HttpContext.Current.Session在IIS 7.5中的Web API控制器中为空,但在IIS Express中正常

Asp.net HttpContext.Current.Session在IIS 7.5中的Web API控制器中为空,但在IIS Express中正常,asp.net,session,asp.net-web-api,iis-7.5,iis-express,Asp.net,Session,Asp.net Web Api,Iis 7.5,Iis Express,在调试模式下从Visual Studio 2012启动时,我的代码运行良好-我认为使用IIS Express,但当我将其发布到IIS 7.5.7600时,会话对象为空。我之所以知道这一点,是因为我已经对我的记录器进行了调试调用 我尝试了不同的方法将SessionStateBehavior设置为Required: System.Web.HttpContext.Current.SetSessionStateBehaviorSystem.Web.SessionState.SessionStateBeh

在调试模式下从Visual Studio 2012启动时,我的代码运行良好-我认为使用IIS Express,但当我将其发布到IIS 7.5.7600时,会话对象为空。我之所以知道这一点,是因为我已经对我的记录器进行了调试调用

我尝试了不同的方法将SessionStateBehavior设置为Required: System.Web.HttpContext.Current.SetSessionStateBehaviorSystem.Web.SessionState.SessionStateBehavior.Required

我把它放在了几个地方: 1.应用程序启动 2.应用程序\u后验证请求 3.应用程序\u后授权请求

似乎在调试模式/IIS Express中调用了2和3,但在我的QA IIS 7.5服务器中没有调用

我感谢你的帮助

更新-这是my web.config的一部分:

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" enableVersionHeader="false" executionTimeout="200" maxRequestLength="12288" />
    <authentication mode="None" />
    <sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="180">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
      </providers>
    </sessionState>

<system.webServer>
  <modules>
    <remove name="Session" />
    <add name="Session" type="System.Web.SessionState.SessionStateModule"/>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    <add name="ResponseHeaderRewriter" type="MoveShakeWebApp.Utilities.Security.ResponseHeaderRewriter" />
    <remove name="BundleModule" />
    <add name="BundleModule" type="System.Web.Optimization.BundleModule" />
  </modules>

更新2-我测试了在视图控制器中设置和检索会话变量-这是一个公共ActionResult-并且工作正常。

1-您不应该在应用程序启动中操作会话。2-您可以在第3节的本地IIS上运行它-是否在Web.config中删除和添加SessionStateModule?是,我在Web.config中添加和删除SessionStateModule。我将粘贴web.config中的代码片段作为上述更新。@LanP在IIS上重新创建应用程序虚拟应用程序。