問題タブ [idispatchmessageinspector]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1921 参照

c# - MSMQ エンドポイントでメッセージ インスペクターを使用して WCF 要求と応答をログに記録する

私は WCF サービス レイヤーに取り組んでいます。これは、メッセージ インスペクターを使用して、要求と応答の SOAP メッセージをログに記録します。

関係のないコードを取り除いたインスペクタを次に示します。

MSMQで最適に機能する新しいビジネス要件が発生するまでは、すべて順調でした。そのため、現在 MSMQ エンドポイントを実装中です。ここでの問題は、メッセージが一方通行であることです。

応答オブジェクトを作成しても、インスペクターの BeforeSendReply メソッドで「応答」は null になり、クライアントには何も返されません。

現時点でもっともらしいと思われる唯一のことは、ロギングをメッセージ インスペクタからメッセージ プロセッサ ロジックに移動し、そこでリクエストを処理してレスポンスを構築することです。ただし、可能であれば、現在の設定を維持することを好みます。

問題は、一見ありそうにないように見えますが、「MSMQ を使用して、インスペクターの BeforeSendReply メソッドのパラメーターに応答メッセージを含めることは可能ですか?」ということです。

前もって感謝します。よろしく。


編集 2015.08.27

Message Inspector を使用してロギングをやめました。今、私のサービス層にログインしています。これが私がやったことです。私はまだ提案を受け付けています。

0 投票する
1 に答える
62 参照

wcf - サービス バスでメッセージ ヘッダーを適切に再送信する方法

私は、さまざまな異なるサービス (ヘッダーに資格情報トークンを含む) に宛てられたメッセージを取得し、それらのプロキシ クライアントを使用してそのメッセージをサービスに中継する必要がある "愚かな" サービス バスをゼロから構築してきました。

説明する短いコード スニペット -

IDispatchMessageInspector を実装し、AfterRequest と BeforeReply を使用して次のことを試みています。

A. ヘッダーから値を取得し、それらをオブジェクトとして BeforeSend に送信します。

B. 正しいサービスへのプロキシ クライアント メッセージにそれらを挿入するための BeforeSend で。

ここでIDispatchを誤用していますか? これは正しいアプローチですか?サービスバスについての私の考えが今のところ正しいかどうかは無視してください。

これが適切でない場合、プロキシ メッセージが元のサービスに送信されるときにメッセージ ヘッダーを収集して適切に挿入するにはどうすればよいでしょうか。

0 投票する
1 に答える
290 参照

wcf - IServiceBehavior : 一部のメッセージにメッセージ インスペクターを適用できないようにする

WCF サービスで、属性 [WebAppServiceBehavior] を追加しました。この属性は、サービスのメッセージ内の一部のヘッダーの信頼性をチェックします。

これらのチェックを無視できるいくつかの特定のメソッドで他の属性を使用できる可能性はありますか?

私の問題は、サービスに 20 個のメソッドがあり、このチェックから 2 つのメソッドのみを除外したいことです。

0 投票する
0 に答える
75 参照

c# - C# WCF は MessageInspector で ?wsdl をキャッチできません

WCF パブリック サービスに送信されたすべてのメッセージをキャッチしようとしています。

私は WCF サービス拡張機能を使用していますが、実際にはすべてのエンドポイントが管理されています。

しかし、次のように wsdl を取得しようとすると:

http://localhost/MyProject.MyPublicService/Service/PublicService.svc?singlewsdl

また

http://localhost/MyProject.MyPublicService/Service/PublicService.svc?wsdl

私はトリガーしませんAfterReceiveRequest...そしてこれは私をとても悩ませます。

AfterReceiveRequestをトリガーするときに入力する方法を知っている人はいますか?wsdl?

から継承したクラスを作成しIServiceBehavior、属性でパブリック サービスを装飾します。

channelDispatcherを追加するために、すべての and for all エンドポイントをループしますMessageInspector

?wsd私自身の意見は、どのエンドポイントがlの要求をキャッチしないかということです...

しかし、私は本当にそれを行う方法がわかりません...

誰かが手がかりを持っているなら、私は本当に感謝しています.

デビッド