1

ワークグループ モードの Windows Server 2003 で、WCF (C#) を使用してプライベート MSMQ キューからメッセージを送受信しています。

クライアント WCF/サービス WCF と MSMQ は同じコンピューター上にあります。

完全に機能するプライベート キューにメッセージを送信するクライアントが 1 つあります。同じプライベート キューからメッセージを受信するサービスが 1 つありますが、このサービスは MSMQ によって呼び出されることはないようです。(エラーは発生しません)

メッセージはキューに積み上げられますが、何も引き出されません。別のコンピュータ (ワークグループ モードではなくドメイン モード) では、メッセージは完全に送受信されました。

MSMQ がサービスを呼び出さない原因となるワークグループ モードの何が問題になっていますか?

その後、常に同じコンピューター上で C# テストを作成しますが、今回は MessageQueue を作成し、この方法で ReceiveCompleted イベントをサブスクライブします。

MessageQueue MQueue = new MessageQueue(".\\private$\\nameofmyqueue");
MQueue.MessageReadPropertyFilter.SetAll();
MQueue.ReceiveCompleted += MessageEventHandler;
Message Msg = MQueue.Receive();

そして、新しいメッセージがあると、MSMQ キューからイベントを受け取ります。

サービス構成 (WFC 構成) または名前空間の予約に問題があると思います。

4

1 に答える 1

0

私は自分のどこに問題があるのか​​ を見つけました。実際、SQL Server 2005 プロシージャを呼び出すトランザクション サービスを使用しました。

SQL 2005 でトランザクション バインディングを使用するために、プロシージャの実行はトランザクション スコープでブレースされます。

例外がスローされ、キャッチされなかった場合、DTC はプロセスをロールバックしていました。私の問題は、サーバーで DTC/リモート クライアント接続が有効になっていないことです。

したがって、トランザクション スコープを使用しないか、DTC/リモート クライアント接続を有効にする必要があります。

DTC とリモート クライアント接続を使用する場合は、DTCとリモート クライアント接続を有効にするとサーバーが再起動するため、事前にリモート クライアント接続を有効にする必要があります。

于 2008-12-19T10:43:36.267 に答える