NHibernate Version: 2.1
Ich verwende einen ziemlich normalen HttpModule-Ansatz zur Implementierung von Anforderungssitzungen in einer ASP.NET + NHibernate-Anwendung. Ich versuche, WebSessionContext
zu nutzen, aber es scheint nicht richtig zu funktionieren. Insbesondere funktioniert alles hervorragend für die erste Anfrage auf der Anwendung, aber zusätzliche Anfragen führen zu einer "Sitzung ist geschlossen!" Ausnahme, wenn die Sitzung verwendet wird. Durch das Zurücksetzen des Anwendungspools kann eine andere Anforderung erfolgreich ausgeführt werden. Anschließend wird "Sitzung wird geschlossen" angezeigt.
Es gibt ein paar bewegende Teile, aber ich weiß nicht genug darüber, wie der Kontext verwaltet wird, um ihn einzugrenzen, also ... hier ist alles!
In web.config:
%Vor%(Ich habe versucht, es auch auf "web" zu setzen, mit dem gleichen Ergebnis.)
Das Modul, dessen Konfiguration bestätigt wurde:
%Vor%Und mein kleiner Helfer:
%Vor%Das Beispiel für NHibernate 1.2 (von NHibernate in Action) zeigt, dass die Entbindelung vor dem Schließen erfolgt.
Funktioniert diese Bestelländerung?
%Vor%Ich verwende den folgenden NHibernate Session Manager. (Dies war ursprünglich von einem CodeProject-Artikel, den ich modifiziert hatte, um etwas robuster zu sein.) Es gibt keine Initialisierung in Global.asax, nur über Konfigurationsparameter in web.config / hibernate.xml.cfg.
%Vor%Nur eine Vermutung, aber was passiert, wenn Sie CurrentSessionContext.Unbind innerhalb des finally-Bereichs direkt nach session.Close () platzieren? Ich kann mich nicht genau erinnern, aber ich glaube, dass die Ausführung beendet wird, nachdem der finally-Block fertig ist. Wenn das der Fall ist, ist die Session immer noch an den Kontext gebunden und wird daher nie entfernt.?
Tags und Links asp.net nhibernate