次のコードがあります。
class ProcessHandler : IHandleMessages<StartProcess>
{
public IBus Bus { get; set; }
public void Handle(StartProcess message)
{
//some long living process (over 3 min)
Bus.SendLocal(new SameMessage()); //get error here
}
}
エラー メッセージ: 操作は、トランザクションの状態に対して有効ではありません。
スタックトレース:
* System.Transactions.TransactionState.EnlistVolatile(InternalTransaction tx, IEnlistmentNotification enlistmentNotification, EnlistmentOptions enlistmentOptions, Transaction atomicTransaction) で System.Transactions.Transaction.EnlistVolatile(IEnlistmentNotification enlistmentNotification, EnlistmentOptions enlistmentOptions) でNServiceBus.Unicast.UnicastBus.SendMessage(List1 addresses, String correlationId, MessageIntentEnum messageIntent, Object[] messages) in :line 0
at NServiceBus.Unicast.UnicastBus.SendMessage(Address address, String correlationId, MessageIntentEnum messageIntent, Object[] messages) in :line 0
at NServiceBus.Unicast.UnicastBus.Send(Address address, Object[] messages) in :line 0
at NServiceBus.Unicast.UnicastBus.SendLocal(Object[] messages) in :line 0
at NServiceBus.Unicast.UnicastBus.SendLocal(Object message) in :line 0
at Amira.Merger.WorkerRole.Handlers.ProcessTPGFilesHandler.SaveToDataBase(TourML tourMLObj) in d:\AmiraProject\SourcesOfAmira-Tour\Amira\Amira.Merger.WorkerRole\Handlers\ProcessTPGFilesHandler.cs:line 161
at Amira.Merger.WorkerRole.Handlers.ProcessTPGFilesHandler.DeserializeAndSaveData() in d:\AmiraProject\SourcesOfAmira-Tour\Amira\Amira.Merger.WorkerRole\Handlers\ProcessTPGFilesHandler.cs:line 139
at Amira.Merger.WorkerRole.Handlers.ProcessTPGFilesHandler.Handle(StartProcessTPGFiles message) in d:\AmiraProject\SourcesOfAmira-Tour\Amira\Amira.Merger.WorkerRole\Handlers\ProcessTPGFilesHandler.cs:line 122
at lambda_method(Closure , Object , Object )
at NServiceBus.Unicast.HandlerInvocationCache.Invoke(Object handler, Object message, Dictionary
2 Dictionary) in :line 0 at NServiceBus.Unicast.HandlerInvocationCache.InvokeHandle(Object handler, Object message) in :line 0 at NServiceBus.Pipeline.Behaviors.LoadedMessageHandlers.b_ 2(Object handlerInstance, Object message) in : line 0 at NServiceBus .Pipeline.Behaviors.InvokeHandlersBehavior.DispatchMessageToHandlersBasedOnType(IBuilder builder, LogicalMessage toHandle, LoadedMessageHandlers loadedHandlers, BehaviorContext context) in:line 0 at NServiceBus.Pipeline.Behaviors.InvokeHandlersBehavior.Invoke(BehaviorContext context, Action next) in:line 0 at NServiceBus.Pipeline .BehaviorChain.InvokeNext(BehaviorContext context) in :line 0 at NServiceBus.Pipeline.BehaviorChain.<>c _DisplayClass1.b_0() in :line 0 at NServiceBus.Sagas.SagaPersistenceBehavior.Invoke(BehaviorContext context, Action next) in :line 0 at NServiceBus.Pipeline.BehaviorChain.InvokeNext(BehaviorContext context) in :line 0 at NServiceBus.Pipeline.BehaviorChain.< >c _DisplayClass1.b_ 0() in:line 0 at NServiceBus.Pipeline.Behaviors.LoadHandlersBehavior.Invoke(BehaviorContext context, Action next) in:line 0 at NServiceBus.Pipeline.BehaviorChain.InvokeNext(BehaviorContext context) in:line 0 at NServiceBus.Pipeline.BehaviorChain.<>c _DisplayClass1.b_0() in :line 0 at NServiceBus.Pipeline.Behaviors.CallbackInvocationBehavior.Invoke(BehaviorContext context, Action next) in :line 0 at NServiceBus.Pipeline.BehaviorChain.InvokeNext(BehaviorContext context) in :line 0 at NServiceBus.Pipeline.BehaviorChain .<>c _DisplayClass1.b_ 0() in :line 0 at NServiceBus.Pipeline.Behaviors.ApplyIncomingMessageMutatorsBehavior.Invoke(BehaviorContext context, Action next) in :line 0 at NServiceBus.Pipeline.BehaviorChain.InvokeNext(BehaviorContext context) in :line NServiceBus.Pipeline.BehaviorChain.<>c _DisplayClass1.b_で 00() in :line 0 at NServiceBus.Pipeline.Behaviors.ExtractLogicalMessagesBehavior.Invoke(BehaviorContext context, Action next) in :line 0 at NServiceBus.Pipeline.BehaviorChain.InvokeNext(BehaviorContext context) in :line 0 at NServiceBus.Pipeline.BehaviorChain .<>c _DisplayClass1.b_ 0() in :line 0 at NServiceBus.Pipeline.Behaviors.RaiseMessageReceivedBehavior.Invoke(BehaviorContext context, Action next) in :line 0 at NServiceBus.Pipeline.BehaviorChain.InvokeNext(BehaviorContext context) in :line NServiceBus.Pipeline.BehaviorChain.<>c _DisplayClass1.b_で 00() in :line 0 at NServiceBus.Pipeline.Behaviors.ApplyIncomingTransportMessageMutatorsBehavior.Invoke(BehaviorContext context, Action next) in :line 0 at NServiceBus.Pipeline.BehaviorChain.InvokeNext(BehaviorContext context) in :line 0 at NServiceBus.Pipeline.BehaviorChain .<>c _DisplayClass1.b__0() : 行 0 の NServiceBus.UnitOfWork.UnitOfWorkBehavior.Invoke(BehaviorContext コンテキスト、次のアクション) : 行 0*
誰かがこれで私を助けることができますか? ありがとう