MSMQ で実行されている WCF サービスのトランザクション タイムアウトを動的に設定できるようにする必要があります。MSDN の例に従っています: http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.channeldispatcher.transactiontimeout.aspx。ただし、設定しているタイムアウトは機能していないようです。
TransactionTimeoutプロパティを設定するために使用しているコードは次のとおりです。
ServiceProperties properties = ...; // has a TransactionTimeout value for the service
var serviceHost = new ServiceHost(...);
serviceHost.Open();
var channelDispatchers =
serviceHost.ChannelDispatchers.Select(
cd => new ChannelDispatcher(cd.Listener)).ToArray();
foreach (var channelDispatcher in channelDispatchers)
{
channelDispatcher.TransactionTimeout = properties.TransactionTimeout;
}
サービスを実行し、サービスの実装に 2 分間の遅延を設定すると、別の MSMQ キューに書き込もうとすると、トランザクション登録エラーが発生します。
例外: キューへの送信中にエラーが発生しました: 指定されたトランザクションを登録できません。(-1072824232、0xc00e0058)。MSMQ がインストールされ、実行されていることを確認します。ローカル キューに送信する場合は、必要なアクセス モードと承認を備えたキューが存在することを確認してください。
過去にこれを機能させることができた人はいますか?どんなアイデアでも大歓迎です。
前もって感謝します。