我們在服務器#1上有Web服務,服務器#2上有數據庫。 Web服務使用事務範圍來產生分佈式事務。一切都是正確的。異常「操作對事務狀態無效」使用TransactionScope
而我們在服務器#3上有另一個數據庫。我們在這臺服務器上遇到了一些問題,我們重新安裝了操作系統和軟件。我們配置了MSDTC,並嘗試使用服務器#1的Web服務與此服務器上的數據庫進行通信。 現在,在事務處理範圍內的第一條選擇語句之後,我們得到:The operation is not valid for the state of the transaction
。如果使用事務範圍,則此異常會落入每個Web服務請求中。 服務器#2和服務器#3幾乎相似。差異只能在設置中。 在所有服務器上安裝了.NET Framework 3.5 SP1和SQL Server SP3。
完整堆棧跟蹤:
System.Transactions.TransactionState.EnlistPromotableSinglePhase(InternalTransaction TX,IPromotableSinglePhaseNotification promotableSinglePhaseNotification,交易原子事務)в System.Transactions.Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification promotableSinglePhaseNotification)в System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction t System.Data.SqlClient.SqlInte rnalConnection.Enlist(事務Tв System.Data.SqlClient.SqlInternalConnectionTds.Activate(事務 交易)в System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(事務 交易)в System.Data.ProviderBase.DbConnectionPool.GetConnection(的DbConnection owningObject)в System.Data.ProviderBase.DbConnectionFactory.GetConnection(的DbConnection owningConnection)в System.Data.ProviderBase.DbConnectionClosed.OpenConnection(的DbConnection outerConnection,DbConnectionFactory connectionFactory的)в System.Data.SqlClient.SqlConnection.Open ()Π NHibernate.Connection.DriverConnectionProvid er.GetConnection()в NHibernate.Impl.SessionFactoryImpl.OpenConnection()
我搜索了這個消息,但並沒有找到任何合適的解決方案。 那麼我應該檢查哪些設置,以及我應該怎麼做才能修復它?
什麼操作系統?你究竟如何配置MSDTC? – 2010-04-12 15:46:24
你使用什麼形式的TransactionScope()構造函數? – gprasant 2010-12-20 07:17:48
嗨Lanfear, 你解決了這個問題嗎?我們在測試環境中遇到同樣的錯誤。開發環境中的相同代碼正常工作。 – 2011-02-18 10:48:09