2

VS2010内で、WCFによってトランザクションMSMQからディスパッチされるメッセージをデバッグしようとしています。

キューに1つのメッセージがあります。

問題は、デバッグブレークポイントを配置し、それを数秒間そのままにして次の行に進むと、メッセージがアプリケーションに再送信され、フレームがの開始/エントリポイントにジャンプして戻るのを確認することです。再びアプリケーション。

1つのメッセージで機能させる方法について何かアイデアはありますか?(キューにはメッセージが1つしかないため、メッセージが複数回ディスパッチされないようにする方法について質問します)

どうもありがとう、

4

2 に答える 2

3

ここでWCFタイムアウトを処理していると思われます。

デバッグ中にサービスがセッションを終了すると思います。メッセージはデバッグセッションで完全に処理されなかったため、キューからメッセージを再度読み取り、すべてがエントリポイントから再開されます。

Web.config自分またはファイル内のバインディングのタイムアウトServiceReferences.ClientConfigをより高い値に設定することをお勧めします。

<binding name="yourEndpointName" closeTimeout="00:10:00" openTimeout="00:10:00" 
                receiveTimeout="00:10:00" sendTimeout="00:10:00"
                <!-- other config values here --> >

(少なくとも)バインディングを増やす必要がありますreceive timeout。バインディング受信タイムアウトはセッションタイムアウトの原因です。

于 2012-09-13T11:37:34.093 に答える
0

わかりました。WCFサービスをInstanceContext.Singleに設定し、同時実行モードをsingleに設定すると正常に機能するようです。ただし、デバッグとリリースを切り替えて、アプリの構成またはサービス自体を変更してMTにする必要があるため、これは面倒です。

于 2012-09-26T16:57:50.923 に答える