2013-04-08 26 views
11

Trong môi trường phát triển của chúng tôi, tất cả ứng dụng ASP.NET hoạt động tốt. Tuy nhiên, khi tôi triển khai trang web trên máy thử nghiệm, trên một số trang, tôi nhận được ngoại lệ này:Ngoại lệ NHibernate: Giao dịch không được kết nối hoặc bị ngắt kết nối

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 

Tôi không biết cách giải quyết vấn đề này. Sự khác biệt duy nhất là phiên bản DB: Phát triển: 10.0.5500 (2008 R2, SP1, Express) Kiểm tra: 10.0.5500 (2008, SP3)

Có ai có ý tưởng gì đang xảy ra ở đây không?

+0

Thật khó để nói mà không có bất kỳ mã nào. –

Trả lời

4

Đã xảy ra sự cố với triển khai mẫu phiên cho mỗi yêu cầu của bạn. ASP.NET là đa luồng và phiên đang được đóng lại khi một chuỗi chấm dứt thay vì khi yêu cầu kết thúc. Có rất nhiều examples về cách quản lý phiên cho mỗi yêu cầu và NHibernate đã được xây dựng trong NHibernate.Context.WebSessionContext nhưng tôi thích sử dụng một khuôn khổ tiêm phụ thuộc như Ninject.

+6

Cảm ơn bạn đã trả lời của bạn, nhưng tôi (cuối cùng) đã tìm ra nó. Có một kích hoạt gây ra một ngoại lệ, mà lần lượt gây ra một rollback. – Martijn

25

Đây là nhận xét nhưng tôi cũng gặp vấn đề tương tự.

Lỗi này có thể xảy ra khi trình kích hoạt gây ra ngoại lệ cấp cơ sở dữ liệu. Điều này sẽ làm cho giao dịch được cuộn lại do đó ngoại lệ.

+3

Đúng, trong trường hợp của tôi, tôi đã chèn một chuỗi dài hơn trường dữ liệu được chấp nhận. Thông báo lỗi không phải là rất hữu ích. – Candide

+0

Nó rất hữu ích cho tôi! – Rahnzo

+1

Đúng. Tôi đã có một số loại dữ liệu không phù hợp trong dữ liệu chèn vào, và tôi đã nhận lỗi này không thể hiểu được từ NHibernate. Sẽ có được tốt đẹp nếu họ có thể vừa vượt qua các lỗi từ Sql thay vì vô nghĩa khó hiểu này. –

0

Một vấn đề khác có thể là bảo mật người dùng (ngoại lệ cấp cơ sở dữ liệu một lần nữa). Trong trường hợp của tôi, sự cố DB cơ bản là:

The server principal "AppUser" is not able to access the database "AppDB" under the current security context. 
Các vấn đề liên quan