私はこの問題に数日間苦しんでおり、わかりません。NServiceBus Bus.Send()。IIS/Windows Server 2008で登録されていない(コールバック)
IISとWindows Server 2008 R2でホストされている単純なWCF Webサービスがあります。次のようにWebサービスの実装は次のとおりです。
var completionResult = new CompletionResult();
var updateTextMessage = new UpdateText { TextTemplateId = textTemplateId, Text = text };
var asyncResult = Global.Bus.Send(updateTextMessage).Register(x => completionResult = x.AsyncState as CompletionResult, null);
asyncResult.AsyncWaitHandle.WaitOne(10000);
if (completionResult.Messages != null && completionResult.Messages.Length > 0)
{
return ((UpdateTextResponse)completionResult.Messages[0]).ImageData;
}
return string.Empty;
私は同期的にNSBを使用しようとすると、悪いデザインと考えられているが、私はちょうど試していると私は本当にこの作業を取得したいことを知っています。したがって、メッセージは正常にリモートエンドポイントに送信され、メッセージは正常に処理されますが、リモートエンドポイントがBus.Replyを実行すると、応答メッセージは単にエーテル内で失われます。私はNSBの最新バージョンを使用しています。奇妙なことに、これは私のWindows 7開発マシンでうまく動作します。私は両方のマシンでアクティブディレクトリがオフになっていることを確認しました。私はまた、受信エンドポイントでWiresharkを実行し、十分に私はパケットデータの着信メッセージを参照してください。何かがIISに邪魔されていないようです。私は両方のエンドポイントについてもロギングしきい値をDEBUGに切り替えましたが、何も変わっていません。ここで
Bus = NServiceBus.Configure.WithWeb()
.Log4Net()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start();
は、エンドポイントのコンフィグます:
IIS Config (this side is not getting the response)
<MsmqTransportConfig InputQueue="Web.InputQueue" ErrorQueue="Web.ErrorQueue" MaxRetries="5" NumberOfWorkerThreads="1"/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Messages" Endpoint="Node.Distributor.DataInputQueue"/>
</MessageEndpointMappings>
</UnicastBusConfig>
---------------------------------------------------------------
Endpoint which does the reply
<MsmqTransportConfig ErrorQueue="Node.ErrorQueue" InputQueue="Node.InputQueue" MaxRetries="5" NumberOfWorkerThreads="1"/>
<UnicastBusConfig DistributorControlAddress="Node.Distributor.ControlInputQueue" DistributorDataAddress="Node.Distributor.DataInputQueue" />
私はまた、送信エンドポイントは、ここではWebコンポーネントのための私のApplication_Startupのコードである「...にメッセージを送る」いつも言います通信をテストする2つのスタンドアロンのNServiceBusHostアプリケーションが作成され、正常に動作しました。私はまた、返信アドレスをハードコーディングし、.Replyを.Sendに置き換えましたが、実際の宛先を指定しましたが、それでも動作しませんでした。だから再びIISに関連しているようです。どんな助けでも大歓迎です!
nservicebus設定エンティティを投稿できますか?また、リモートエンドポイントからbus.Reply()のアドレスを確認する価値があります。 – Rajesh
私はconfigsを投稿しました。ありがとう! – thehin