2016-10-17 12 views
1

私はサービスを書いており、IDispatchMessageInspectorクラスを実装しており、AfterReceiveRequest関数をオーバーライドしています。WCFスキーマ検証ツールからカスタムレスポンスを返す

私が実際にやりたいことは、検証が機能していない場合は例外をスローしません。自分の返答を作り、返信したいと思っています。

どうすればいいですか?私はSOAPメッセージをまったく返信したくありません。

public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) 
      { 
       try 
       { 
        ValidateMessage(ref request); 
       } 
       catch (FaultException e) 
       { 
        throw new FaultException<CustomResponse>(new CustomResponse { Success = false, ErrorMessage = e.Message}); 

       } 
       return null; 
      } 

例外を戻す必要がありますか?

おかげ

答えて

0

は、メッセージを作成するためにBeforeSendReplyを使用して調べてください。

  void IDispatchMessageInspector.BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState) 
      { 
       try 
       { 
        ValidateMessage(ref reply);     
       } 
       catch (FaultException fault) 
       { 
        // handle the fault and create the reply 
        // choose one of the CreateMessage overloads  
        reply = Message.CreateMessage(reply.Version, "SOME MESSAGE");      
       } 
      } 

CreateMessageの追加オーバーロードについては、以下を参照してください。

https://msdn.microsoft.com/en-us/library/system.servicemodel.channels.message.createmessage(v=vs.110).aspx

関連する問題