2016-10-17 29 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