Объект Session является нулевым в веб-приложении ASP.NET MVC 4 после развертывания в IIS 7 (W 2008 R2)
Я разработал веб-приложение ASP.NET MVC 4 (.net 4.5), которое отлично работает в Visual Studio 2012. После развертывания в IIS 7 в Windows Server 2008 R2 кажется, что объект HttpContext.Session внутри моего контроллера имеет значение null. Я создал простое тестовое приложение ASP.NET MVC 4, чтобы продемонстрировать проблему.
В моем тестовом приложении у меня есть простой Home Controller
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 выглядит примерно так:
@{
ViewBag.Title = "Index";
}
Index
This is a simple test
<p>@ViewBag.Info</p>
Поэтому, когда я запускаю приложение, я получаю то, что ожидал:
Index
This is a simple test
a string in session state
Но после того, как я развернул приложение на веб-сервере, веб-сайт дает мне следующую страницу, указывающую, что объект Session является нулевым:
Index
This is a simple test
beeeeuuuuu - Session = null!!!
Веб-приложение развертывается на веб-сайте по умолчанию, который работает в пуле приложений ASP.NET v4.0 (интегрированный конвейер).
Я ужеустановил ASP.NET на сервер, используя aspnet_regiis -ir, но это неТ помочь. Состояние сеанса включено (в процессе) на сервере ISS. Я надеюсь, что кто-нибудь может помочь мне здесь, потому что яЯ пытаюсь решить это в течение достаточно долгого времени.
Большое спасибо заранее и всего наилучшего.
ОБНОВЛЕНИЕ: Я также протестировал сборку ASP.NET MVC 4 с .NET 4.0 вместо 4.5, и у него та же проблема. Я также развернул приложение ASP.NET Web Pages (.NET 4.0), и оно работает нормально (HttpContext.Current.Session не является нулевым в приведенном ниже коде).
ОБНОВЛЕНИЕ II: Я также попытался сохранить состояние сеанса в базе данных, которая отлично работала на моей машине для разработки, но имела ту же проблему на рабочем сервере (HttpContext.Session по-прежнему возвращает ноль).