私の 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 をクライアントに返すにはどうすればよいですか?