我遵循NServiceBus入门指南(第5版),我收到以下错误。
当客户端向服务器发送命令时,服务器有接收消息的问题。代码没问题,因为另一台机器上完全相同的代码正在运行。所以我的机器上缺少一些东西。
我按照教程中提到的那样运行了这个命令:
DISM.exe / Online / NoRestart / English / Enable-Feature / all / FeatureName:MSMQ-Server
但它还没有用。
2016-11-01 19:50:47.316错误 ServiceBus.Transports.Msmq.MsmqDequeueStrategy接收消息时出错。 System.Transactions.TransactionAbortedException:事务已中止。 ---> System.Transactions.TransactionManagerCommunicationException:与底层事务管理器的通信失败。 ---> System.Runtime.InteropServices.COMException:事务管理器不可用。 (HRESULT异常:0x8004D01B) 在System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(String nodeName,Guid resourceManagerIdentifier,IntPtr managedIdentifier,Boolean& nodeName Matches,UInt32& whereaboutsSize,CoTaskMemHandle& whereaboutsBuffer,IResourceManagerShim& resourceManagerShim) 在System.Transactions.Oletx.DtcTransactionManager.Initialize() ---内部异常堆栈跟踪结束--- at system.Transactions.Oletx.OletxTransactionManager.ProxyException(COMExcept 离子comException) 在System.Transactions.Oletx.DtcTransactionManager.Initialize() 在System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory() 在System.Transactions.Oletx.OletxTransactionManager.CreateTransaction(Transa ctionOptions属性) 在System.Transactions.TransactionStatePromoted.EnterState(InternalTransactio n tx) ---内部异常堆栈跟踪结束--- 在System.Transactions.TransactionStateAborted.CheckForFinishedTransaction(In ternalTransaction tx) 在System.Transactions.EnlistableStates.Promote(InternalTransaction tx) 在System.Transactions.Transaction.Promote() 在System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transacti 交易) 在System.Transactions.TransactionInterop.GetDtcTransaction(Transaction trans 行动) 在System.Messaging.MessageQueue.StaleSafeReceiveMessage(UInt32超时,Int3 2个动作,MQPROPS属性,NativeOverlapped *重叠,ReceiveCallback接收 iveCallback,CursorHandle cursorHandle,IntPtr事务) 在System.Messaging.MessageQueue.ReceiveCurrent(TimeSpan timeout,Int32 actio n,CursorHandle游标,MessagePropertyFilter过滤器,MessageQueueTransaction中 ternalTransaction,MessageQueueTransactionType transactionType) 在System.Messaging.MessageQueue.Receive(TimeSpan超时,MessageQueueTransa ctionType transactionType) 位于C:\ Bu的NServiceBus.Transports.Msmq.MsmqDequeueStrategy.b__12_1() ildAgent \工作\ 3206e2123f54fce4的\ src \ NServiceBus.Core \交通服务\ MSMQ \ MsmqDequeueS trategy.cs:第248行 在NServiceBus.Transports.Msmq.MsmqDequeueStrategy.TryReceiveMessage(Func`1 r eceive,Message&在C:\ BuildAgent \ work \ 3206e2123f54fce4 \ src \ NServiceBus中的消息) .Core \ Transports \ Msmq \ MsmqDequeueStrategy.cs:第332行
答案 0 :(得分:2)
对我来说,问题是服务分布式事务处理协调器已关闭。打开它后,一切都按预期工作。