2

一連の Web サービス用の WCF ベースのテスト ハーネス クライアントがあります。テスト クライアントを使用すると、サービスとの間でやり取りされる生のリクエストとレスポンスを確認できます。Message Inspector エンドポイント ビヘイビアーを使用して、生の要求と応答メッセージを「選択」し、後で UI に表示するために保存します。

これは、無効な資格情報が渡されるユースケースを除いて、うまく機能します。サーバーは HTTP 401 と、何が起こったかの詳細を含む SOAP 障害を返します。これはいくつかの点で私を傷つけます:

  1. クライアントでは、これはではMessageSecurityExceptionなくとして表示されるFaultExceptionため、障害から詳細を取得できません。
  2. この例外はAfterReceiveReply、メッセージ インスペクターのイベント ハンドラーの起動を妨げているように見えるため、生の応答にアクセスできません。

SOAP エラーが FaultException として発生し、返される HTTP ステータス コードに関係なく、メッセージ インスペクターが応答を処理できるように、このケースを処理する方法はありますか?

ありがとう!

4

1 に答える 1

2

それはいけません。サーバー側コードでFaultException.NET 例外が発生、キャッチされた場合にのみ取得されます。

HTTP 401 は「無許可のアクセス」です。サーバー コードに到達する前に例外が発生します --> これは常に a になります(魔法のように FaultException に変換する方法もありません) MessageSecurityExceptionFaultException

実行がサーバー コードに到達する前に発生する例外 (EndpointNotFoundExceptionや などTimeoutException) は、フォールト例外ではありません。

ただし、すべての WCF 固有の例外は、共通の基本クラスから派生していCommunicationExceptionます。そのため、フォールバックとしてそれを処理できる場合があります。

于 2010-01-11T20:39:15.323 に答える