1

私の WCF サービスでは、から継承するカスタム エンコーダーを実装しましたSystem.ServiceModel.Channels.MessageEncoder

そのエンコーダーでは、生のメッセージを取得し、ReadMessage()メソッドのオーバーライドで受信したヘッダーを操作します。

この操作中に、メッセージを無効にするヘッダー内の何かを検出する場合があり、クライアントに有用な例外を返したいと考えています。

私が試してみました:

throw new Exception("Some useful message");

と:

throw new FaultException("Some useful message");

どちらも、応答本文なしで HTTP 400 をクライアントに返します。

実際の Web サービス メソッドからを喜んでスローすることができFaultException、これはクライアントに正しく返されますが、処理の後半の段階で、SOAP ヘッダーにアクセスできなくなります (別の方法で誰かに教えてもらえない限り)。

SOAP ヘッダーの情報に基づいて、わかりやすいメッセージで応答 500 をクライアントに返すにはどうすればよいですか?

4

1 に答える 1

1

あなたは呼び出すことができます:

OperationContext.Current.IncomingMessageHeaders

必要に応じて、サービスメソッドでヘッダーを検査します。カスタム MessageEncoder は、あなたが説明したことを行うために使用するのは間違った獣のようです。

于 2012-07-03T13:13:31.653 に答える