我构建了一个事务性的MSMQ WCF服务.我在我的操作中使用了以下属性:
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
我在服务中使用Nhibernate.使用Nhibernate我在会话中提交.如果我禁用Nhibernate提交,则会正确处理消息并从队列中删除.通过此提交,Nhibernate事务正确,但我的消息进入重试队列.
这是我进入Nhibernate服务跟踪的例外.
Description Handling an exception. Exception details: System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.ObjectDisposedException: Cannot access a disposed object. Object name: 'Transaction'. at System.Transactions.Transaction.DependentClone(DependentCloneOption cloneOption) at System.Transactions.TransactionScope.SetCurrent(Transaction newCurrent) at System.Transactions.TransactionScope.PushScope() at System.Transactions.TransactionScope.Initialize(Transaction transactionToUse, TimeSpan scopeTimeout, Boolean interopModeSpecified) at System.Transactions.TransactionScope..ctor(Transaction transactionToUse, TransactionScopeAsyncFlowOption asyncFlowOption) at System.Transactions.TransactionScope..ctor(Transaction transactionToUse) at NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare(PreparingEnlistment preparingEnlistment) --- End of inner exception stack trace --- at System.Transactions.TransactionStatePromotedAborted.PromotedTransactionOutcome(InternalTransaction tx) at System.Transactions.TransactionStatePromotedEnded.EndCommit(InternalTransaction tx) at System.Transactions.CommittableTransaction.Commit() at System.ServiceModel.Dispatcher.TransactionInstanceContextFacet.Complete(Transaction transaction, Exception error)
似乎nhibernate提交破坏了WCF上的事务.我找不到解决这个问题的方法.
任何帮助可能会受到赞赏