0

サービスコールを行う直前にリクエストを傍受しようとしています。

クライアント側でのWCF拡張性の使用

この背後にある考え方は、リクエスト内に特定のプロパティを追加して、リクエストがServiceContract Schemaに対して検証されたときに、リクエストが有効であるように見えるようにすることでした。

ここで提案されているように、IParameterInspectorとBehaviorExtensionを使用しました-

C#WCF拡張性コードを構成ファイルに移動します

ただし、呼び出しがIParameterInspecter public object BeforeCall(string operationName, object[] inputs)メソッドに到達する前であっても、サービス要求はクライアント側で検証されているようです。プロパティを追加するつもりだったところ。

しかし、サービスコールを行うときに、次のエラーが発生します-

通信オブジェクトSystem.ServiceModel.ChannelFactory`1[SomeService.IServiceContract]は、Faulted状態であるため、通信に使用できません。

リクエストにプロパティを追加するには、サービスコールをどこでインターセプトする必要がありますか。

リクエストがクライアント側のスキーマに対して検証される前に、これを必ず行う必要があります。

4

1 に答える 1

0

通常、障害のあるチャネルは、クライアントの要求に応じてサービスによってスローされる予期しない例外 (コントラクトで明示的に定義されていない) が原因で発生します。それよりも前に発生した場合BeforeCallは、さまざまな原因が考えられます。

最初に頭に浮かぶのは、間違ってプラグを差し込んIParameterInspecterで通過しないということです。単純化されたシナリオで正しく差し込まれているかどうかをテストすることから始めるべきです。

そうでない場合はestablishSecurityContext="true"、メッセージ セキュリティで定義されているように、サービス メソッド呼び出しの前に認証要求が生成され、その認証要求が予期しない例外で拒否され、チャネルに障害が発生し、それ以上使用できなくなったことが原因である可能性があります。

他の考えられる原因について考えるのに十分な情報がありません。それらを確認することから始めて、さらに調査するために追加のコードおよび/または構成サンプルを返してください。

于 2012-10-03T12:20:19.217 に答える