問題タブ [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.
wcf - WCF AfterReceiveRequestはヘッダーを取得します
WCF サービスへのリクエストのインターセプトを開始しました。
このようなJavaコードでWebサービスを呼び出しています(短いバージョン)
リクエストを受信していますが、メッセージ リクエストのヘッダーを取得または検索できません。私はこのようなことを試しました:
しかし、私は常に -1 または例外で終わります。これを行う正しい方法は何ですか?Java側でも間違っていますか?
.net - WCF メッセージ インターセプターの構成の問題
この質問は複数回尋ねられたようですが、うまくいきません。
まず、Windows 7 と Windows 8 の両方で VS 2012 を使用してこれを試しましたが、まったく同じ問題が発生しました。
SOAP ヘッダー メッセージを受信して処理する WCF サービスを作成しようとしていますが、多くの検索の結果、メッセージ インターセプターを使用して SOAP ヘッダーを読み取って処理する必要があることがわかりました。
そこで、ローカル マシンに新しい Web サイトを作成し、DemoMessageInspector という名前を付けました。このソリューション内に、次のクラスを追加しました。
HmacVerificationBehavior
HmacVerificationConfigurationセクション
HmacVerificationInspector
Iサービス
そしてサービス
Web.Config ファイルは次のとおりです。
したがって、Web.Config で行がコメントアウトされている場合に完全に機能するサンプル コードがあります。コメントが解除されるとすぐに、次のことが起こります。
それで、問題は基本的にこれをどのように構成する必要があるかです。
または、問題は、WCF エンドポイントから SOAP ヘッダーを読み取るという単純なタスクを完了するために使用する正しいアプローチですか?
c# - WCF サービスの Service Behavior でリクエスト メッセージのタイプ (request.GetType など) を取得する方法
メッセージがカスタム属性で装飾されているかどうかを推測するために、リクエストメッセージの Type を知っていることを期待するカスタム ServiceBehavior を作成しています。
サンプル コントラクトは次のようになります。
次を使用して、動作側でカスタム属性を識別しようとしています。
しかし、typeOfRequestは常に{Name = "BufferedMessage" FullName = "System.ServiceModel.Channels.BufferedMessage"}として入ってきます
request を使用してメッセージのタイプを推測できる方法はありますか?
注:コントラクトを保持するアセンブリを直接参照していますが、サービスはwsdlを介して参照されていません。
wcf - オブジェクト インスタンスをサービス コンテキストに渡す WCF IDispatchMessageInspector
私のWCFサービスで。私はGetCustomerInfoサービスを持っています
AfterReceiveRequest メソッドで WCF メッセージをインターセプトしています。AfterReceiveRequest で、GetCustomerInfo サービスで使用したい myClass のオブジェクト インスタンスを作成しています。
静的クラスを使用したくありません。データが相互受粉する可能性があります。
誰でも私を助けてくれるか、これを行う最善の方法を教えてください。
c# - WCF サービスで IDispatchMessageInspector を使用するには?
WCF サービス実装でIDispatchMessageInspectorを使用して、カスタム ヘッダー値にアクセスしようとしています。
何かのようなもの:
独自の IDispatchMessageInspector クラスを実装しました。
どうすれば合格できますか
System.ServiceModel.Channels。メッセージと
System.ServiceModel。IClientChannel
サービス実装から呼び出されたAfterReceiveRequestに?
編集:
この記事やこの記事のような多くの記事では、独自の を実装する方法の例を示していますServiceBehavior
。したがって、サービスの実装は次のようになります。
これで、MyCustomBehavior
カスタムヘッダー値にアクセスするために、サービス操作メソッド内で何らかの方法でアクセスできますか?
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 ロジックを変更できないことにも注意してください。
c# - SSL が Message Inspector を壊す (WCF のバグ?)
このコード行を実行するカスタム メッセージ インスペクターがあります。
セキュリティが有効になっていない場合はCreateBufferedCopy
正常に動作しますが、SSL が構成されている場合は InvalidOperationException がスローされます。Message request
例外は、オブジェクトが「書き込み済み」状態にあることを主張します。これらすべての構成は次のとおりです。
これは、WCF 自体のバグのようです。つまり、Message request
パラメーターを (SSL 機能によって?) 「書き込み済み」状態のままにしないでください。考え?
関連する場合に備えて、カスタム バインディングが SSL に使用されました。
c# - IDispatchMessageInspector を使用した WCF サービスのログ記録
WCF サービスへの要求と応答をログに記録しようとしています。私が今までやったことは次のとおりです。
すべて正常に動作していますが、懸念事項が 1 つあります。
AfterReceiveRequest
正しいレコードが更新BeforeSendReply
されるように、同期で作業する必要があります。BeforeSendReply
私が念頭に置いているケースは、サービスが複数のクライアントから同時に呼び出されることです。質問:
lastLogId
複数のリクエストとレスポンスの間で混乱したりシャッフルしたりしませんか?- このロギング
BeforeSendReply
は、複数のクライアントが同時にサービスを呼び出している場合に特別に更新されますか? はいの場合は、私の心を安心させるために説明をお願いします。いいえの場合は、これに対するより良い解決策を提供してください。