Я построил службу WCF MSMQ, которая является транзакционной. В моей работе я использовал следующий атрибут:
[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. Я не могу найти способ исправить это.
Любая помощь может быть оценена