Das Sitzungsobjekt ist in der ASP.NET MVC 4-Webanwendung null, sobald es in IIS 7 (W 2008 R2) bereitgestellt wurde.
Ich habe eine ASP.NET MVC 4-Webanwendung (.net 4.5) entwickelt, die in Visual Studio 2012 einwandfrei ausgeführt wird. Nach der Bereitstellung auf IIS 7 unter Windows Server 2008 R2 scheint das HttpContext.Session-Objekt in meinem Controller null zu sein. Ich habe eine einfache ASP.NET MVC 4-Testanwendung erstellt, um das Problem zu veranschaulichen.
In meiner Test-App habe ich einen einfachen 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();
}
}
}
Meine Index.chtml-Ansicht sieht ungefähr so aus:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
This is a simple test
<p>@ViewBag.Info</p>
Wenn ich die Anwendung ausführe, erhalte ich das, was ich erwartet habe:
Index
This is a simple test
a string in session state
Nachdem ich die Anwendung auf dem Webserver bereitgestellt habe, wird auf der Website die folgende Seite angezeigt, die angibt, dass das Sitzungsobjekt null ist:
Index
This is a simple test
beeeeuuuuu - Session = null!!!
Die Webanwendung wird auf der Standardwebsite bereitgestellt, die unter dem ASP.NET v4.0-Anwendungspool (integrierte Pipeline) ausgeführt wird.
Ich habe ASP.NET bereits mit aspnet_regiis -ir auf dem Server neu installiert, aber das hat nicht geholfen. Der Sitzungsstatus ist auf dem ISS-Server aktiviert (In Proc). Ich hoffe, dass mir hier jemand weiterhelfen kann, denn ich versuche dies schon seit geraumer Zeit zu lösen.
Vielen Dank im Voraus und freundliche Grüße.
UPDATE: Ich habe auch einen ASP.NET MVC 4-Build mit .NET 4.0 anstelle von 4.5 getestet, und das hat das gleiche Problem. Ich habe auch eine ASP.NET-Webseiten-App (.NET 4.0) bereitgestellt und das funktioniert einwandfrei (Die HttpContext.Current.Session ist im Code dahinter nicht null).
UPDATE II: Ich habe auch versucht, den Sitzungsstatus in einer Datenbank zu speichern, die auf meinem Entwicklungscomputer einwandfrei funktioniert hat, auf dem Produktionsserver jedoch dasselbe Problem aufweist (HttpContext.Session gibt weiterhin null zurück).