Obiekt Session ma wartość null w aplikacji sieciowej ASP.NET MVC 4 po wdrożeniu w IIS 7 (W 2008 R2)
Opracowałem aplikację internetową ASP.NET MVC 4 (.net 4.5), która działa poprawnie w Visual Studio 2012. Po wdrożeniu do IIS 7 w systemie Windows Server 2008 R2 wygląda na to, że obiekt HttpContext.Session wewnątrz mojego kontrolera ma wartość NULL. Stworzyłem prostą aplikację testową ASP.NET MVC 4, aby zademonstrować ten problem.
W mojej aplikacji testowej mam prosty kontroler domowy
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();
}
}
}
Widok My Index.chtml wygląda mniej więcej tak:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
This is a simple test
<p>@ViewBag.Info</p>
Więc kiedy uruchomię aplikację, otrzymuję to, czego oczekiwałem:
Index
This is a simple test
a string in session state
Ale po wdrożeniu aplikacji na serwerze WWW strona daje mi następującą stronę wskazującą, że obiekt Session jest pusty:
Index
This is a simple test
beeeeuuuuu - Session = null!!!
Aplikacja internetowa jest wdrażana na domyślnej stronie internetowej, która działa w puli aplikacji ASP.NET v4.0 (zintegrowany potok).
Ponownie zainstalowałem ASP.NET na serwerze za pomocą aspnet_regiis -ir, ale to nie pomogło. Stan sesji jest włączony (In Proc) na serwerze ISS. Mam nadzieję, że każdy może mi pomóc tutaj, ponieważ próbuję rozwiązać ten problem przez jakiś czas.
Z góry dziękuję i pozdrawiam.
AKTUALIZACJA: Przetestowałem również kompilację ASP.NET MVC 4 z .NET 4.0 zamiast 4.5 i ma ten sam problem. Wdrożono również aplikację ASP.NET Web Pages (.NET 4.0), która działa dobrze (HttpContext.Current.Session nie ma wartości null w kodzie za).
UPDATE II: Próbowałem również przechowywać stan sesji w bazie danych, która działała dobrze na moim komputerze programistycznym, ale miała ten sam problem na serwerze produkcyjnym (HttpContext.Session nadal zwraca wartość null).