首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一旦部署到IIS7 (W 2008 R2),ASP.NET MVC4Web应用程序中的会话对象为空

一旦部署到IIS7 (W 2008 R2),ASP.NET MVC4Web应用程序中的会话对象为空
EN

Stack Overflow用户
提问于 2013-07-30 21:10:36
回答 2查看 15.4K关注 0票数 4

我开发了一个ASP.NET MVC4Web应用程序(.net 4.5),它在Visual Studio2012中运行良好。在Windows Server2008 R2上部署到IIS7之后,我的控制器内部的HttpContext.Session对象似乎是空的。我创建了一个简单的测试ASP.NET MVC4应用程序来演示这个问题。

在我的测试应用程序中,我有一个简单的Home Controller

代码语言:javascript
复制
public class HomeController : Controller
{
    public ActionResult Index()
    {
          if ( HttpContext != null && HttpContext.Session != null )
          {
              HttpContext.Session[ "test" ] = "a string in session state";
              ViewBag.Info = HttpContext.Session[ "test" ];
              return View();
          }
          else
          {
              if ( HttpContext == null )
              {
                  ViewBag.Info = "beeeeuuuuu - HttpContext = null!!!";
              }
              else if ( HttpContext.Session == null )
              {
                    ViewBag.Info = "beeeeuuuuu - Session = null!!!";
              }
              return View();
          }

    }
}

我的Index.chtml视图如下所示:

代码语言:javascript
复制
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
This is a simple test
<p>@ViewBag.Info</p>

因此,当我运行应用程序时,我得到了我所期望的结果:

代码语言:javascript
复制
Index
This is a simple test 
a string in session state

但在我将应用程序部署到web服务器后,网站给出了以下页面,表明会话对象为空:

代码语言:javascript
复制
Index
This is a simple test 
beeeeuuuuu - Session = null!!!

web应用程序部署到默认网站,该网站在ASP.NET v4.0应用程序池(集成管道)下运行。

我已经使用aspnet_regiis -ir在服务器上重新安装了ASP.NET,但这并没有帮助。在ISS服务器上启用(在进程中)会话状态。我希望任何人能在这里帮助我,因为我正在努力解决这个问题很长一段时间。

非常感谢,并致以亲切的问候。

更新:我还测试了使用.NET 4.0而不是4.5构建的ASP.NET MVC4,它也有同样的问题。我还部署了一个ASP.NET网页应用程序(.NET 4.0),它工作得很好(后面的代码中的HttpContext.Current.Session不是空的)。

更新II:我还尝试将会话状态存储在数据库中,这在我的开发机器上工作得很好,但在生产服务器上也有同样的问题(HttpContext.Session仍然返回null)。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17947975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档