2013-04-08 7 views
11

In unserer Entwicklungsumgebung funktioniert die gesamte ASP.NET-Anwendung einwandfrei. Allerdings, wenn ich die Seite auf der Testmaschine bereitstellen, auf einigen Seiten bekomme ich diese Ausnahme:NHibernate-Ausnahme: Transaktion nicht verbunden oder wurde getrennt

NHibernate.TransactionException: Transaction not connected, or was disconnected 
    at NHibernate.Transaction.AdoTransaction.CheckNotZombied() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line 406 
    at NHibernate.Transaction.AdoTransaction.Rollback() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line 240 

Ich habe keine Ahnung, wie dieses Problem zu lösen. Der einzige Unterschied sind die DB-Versionen: Develop: 10.0.5500 (2008 R2 SP1, Express) Test: 10.0.5500 (2008, SP3)

Hat jemand eine Idee hat, was hier vor sich geht?

+0

Es ist schwer, ohne Code zu sagen. –

Antwort

4

Es gibt ein Problem bei der Implementierung von Session-pro-Request-Mustern. ASP.NET ist multi-threaded und die Sitzung wird geschlossen, wenn ein Thread beendet wird und nicht wenn die Anforderung beendet wird. Es gibt viele examples, wie Session-pro-Anfrage zu verwalten und NHibernate hat eine eingebaute NHibernate.Context.WebSessionContext, aber ich bevorzuge, eine Abhängigkeitsinjektion Framework wie Ninject zu verwenden.

+6

Danke für deine Antwort, aber ich (endlich) habe es herausgefunden. Es gab einen Auslöser, der eine Ausnahme verursachte, die wiederum einen Rollback verursachte. – Martijn

25

Dies war ein Kommentar, aber ich hatte das gleiche Problem.

Dieser Fehler kann auftreten, wenn ein Trigger eine Ausnahme auf Datenbankebene verursacht. Dies führt dazu, dass die Transaktion zurückgesetzt wird, daher die Ausnahme.

+3

In meinem Fall habe ich einen String eingefügt, der länger war als das, was das Datenbankfeld akzeptiert hat. Die Fehlermeldung ist nicht sehr nützlich. – Candide

+0

Es war hilfreich für mich! – Rahnzo

+1

Ja. Ich hatte einige Datentypen in den eingefügten Daten nicht übereinstimmen, und ich habe diesen unverständlichen Fehler von NHibernate erhalten. Wäre schön gewesen, wenn sie den Fehler von Sql anstelle dieses verwirrenden Unsinns einfach durchfahren hätten. –

0

Ein weiteres Problem könnte die Benutzersicherheit sein (erneut eine Ausnahme auf Datenbankebene). In meinem Fall war das zugrunde liegende DB-Problem:

The server principal "AppUser" is not able to access the database "AppDB" under the current security context. 
Verwandte Themen