問題タブ [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 に答える
3066 参照

wcf - WCF AfterReceiveRequestはヘッダーを取得します

WCF サービスへのリクエストのインターセプトを開始しました。

このようなJavaコードでWebサービスを呼び出しています(短いバージョン)

リクエストを受信して​​いますが、メッセージ リクエストのヘッダーを取得または検索できません。私はこのようなことを試しました:

しかし、私は常に -1 または例外で終わります。これを行う正しい方法は何ですか?Java側でも間違っていますか?

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

.net - WCF メッセージ インターセプターの構成の問題

この質問は複数回尋ねられたようですが、うまくいきません。

まず、Windows 7 と Windows 8 の両方で VS 2012 を使用してこれを試しましたが、まったく同じ問題が発生しました。

SOAP ヘッダー メッセージを受信して​​処理する WCF サービスを作成しようとしていますが、多くの検索の結果、メッセージ インターセプターを使用して SOAP ヘッダーを読み取って処理する必要があることがわかりました。

そこで、ローカル マシンに新しい Web サイトを作成し、DemoMessageInspector という名前を付けました。このソリューション内に、次のクラスを追加しました。

HmacVerificationBehavior

HmacVerificationConfigurationセクション

HmacVerificationInspector

Iサービス

そしてサービス

Web.Config ファイルは次のとおりです。

したがって、Web.Config で行がコメントアウトされている場合に完全に機能するサンプル コードがあります。コメントが解除されるとすぐに、次のことが起こります。

それで、問題は基本的にこれをどのように構成する必要があるかです。

または、問題は、WCF エンドポイントから SOAP ヘッダーを読み取るという単純なタスクを完了するために使用する正しいアプローチですか?

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

c# - WCF サービスの Service Behavior でリクエスト メッセージのタイプ (request.GetType など) を取得する方法

メッセージがカスタム属性で装飾されているかどうかを推測するために、リクエストメッセージの Type を知っていることを期待するカスタム ServiceBehavior を作成しています。

サンプル コントラクトは次のようになります。

次を使用して、動作側でカスタム属性を識別しようとしています。

しかし、typeOfRequestは常に{Name = "BufferedMessage" FullName = "System.ServiceModel.Channels.BufferedMessage"}として入ってきます

request を使用してメッセージのタイプを推測できる方法はありますか?

注:コントラクトを保持するアセンブリを直接参照していますが、サービスはwsdlを介して参照されていません。

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

wcf - オブジェクト インスタンスをサービス コンテキストに渡す WCF IDispatchMessageInspector

私のWCFサービスで。私はGetCustomerInfoサービスを持っています

AfterReceiveRequest メソッドで WCF メッセージをインターセプトしています。AfterReceiveRequest で、GetCustomerInfo サービスで使用したい myClass のオブジェクト インスタンスを作成しています。

静的クラスを使用したくありません。データが相互受粉する可能性があります。

誰でも私を助けてくれるか、これを行う最善の方法を教えてください。

0 投票する
5 に答える
20889 参照

c# - WCF サービスで IDispatchMessageInspector を使用するには?

WCF サービス実装でIDispatchMessageInspectorを使用して、カスタム ヘッダー値にアクセスしようとしています。

何かのようなもの:

独自の IDispatchMessageInspector クラスを実装しました。

どうすれば合格できますか

  • System.ServiceModel.Channels。メッセージ

  • System.ServiceModel。IClientChannel

サービス実装から呼び出されたAfterReceiveRequestに?

編集:

この記事やこの記事のような多くの記事では、独自の を実装する方法の例を示していますServiceBehavior。したがって、サービスの実装は次のようになります。

これで、MyCustomBehaviorカスタムヘッダー値にアクセスするために、サービス操作メソッド内で何らかの方法でアクセスできますか?

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

c# - RequestInterceptor と MessageInspector の違いは何ですか?

ここに2つのクエリがあります:-

1)基本的な違いは何ですかMicrosoft.ServiceModel.Web.RequestInterceptor and System.ServiceModel.Dispatcher.DispatchRuntime.MessageInspectors (IdispatchMessageInterceptor)

どちらも、リクエスト パイプラインにカスタム検証/インターセプターを実装するために使用できるリクエスト/メッセージ インターセプターのようです。

いつ別のものを使用するのですか?

2) また、プラグインRequestInterceptorの方法RouteTable.Routes.Add(new ServiceRoute())

私はこのようなクラスを持っています -

そして、このようなルート定義: -

の定義は次のMyServiceHostFactoryとおりです。

現在、次のエラーがスローされています: -

The best overloaded method match for 'System.Collections.Generic.SynchronizedCollection<System.ServiceModel.Dispatcher.IDispatchMessageInspector>.Add(System.ServiceModel.Dispatcher.IDispatchMessageInspector)' has some invalid arguments

この行で: -

MessageInspector で RequestInterceptor を接続しようとしているからです。どちらも異なるインターフェイス階層にあります。

それで、私はここで何をすべきですか?

編集:

また、コードが自分の管理下にないため、AuthenticationInterceptor ロジックを変更できないことにも注意してください。

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

c# - SSL が Message Inspector を壊す (WCF のバグ?)

このコード行を実行するカスタム メッセージ インスペクターがあります。

セキュリティが有効になっていない場合はCreateBufferedCopy正常に動作しますが、SSL が構成されている場合は InvalidOperationException がスローされます。Message request例外は、オブジェクトが「書き込み済み」状態にあることを主張します。これらすべての構成は次のとおりです。

これは、WCF 自体のバグのようです。つまり、Message requestパラメーターを (SSL 機能によって?) 「書き込み済み」状態のままにしないでください。考え?

関連する場合に備えて、カスタム バインディングが SSL に使用されました。

0 投票する
2 に答える
2454 参照

c# - IDispatchMessageInspector を使用した WCF サービスのログ記録

WCF サービスへの要求と応答をログに記録しようとしています。私が今までやったことは次のとおりです。

すべて正常に動作していますが、懸念事項が 1 つあります。

AfterReceiveRequest正しいレコードが更新BeforeSendReplyされるように、同期で作業する必要があります。BeforeSendReply私が念頭に置いているケースは、サービスが複数のクライアントから同時に呼び出されることです。質問:

  • lastLogId複数のリクエストとレスポンスの間で混乱したりシャッフルしたりしませんか?
  • このロギングBeforeSendReplyは、複数のクライアントが同時にサービスを呼び出している場合に特別に更新されますか? はいの場合は、私の心を安心させるために説明をお願いします。いいえの場合は、これに対するより良い解決策を提供してください。