【问题标题】:Throw back custom response from WCF Schema Validator从 WCF 架构验证器返回自定义响应
【发布时间】:2016-10-17 21:37:17
【问题描述】:

我正在编写一个服务并实现了IDispatchMessageInspector 类并覆盖了AfterReceiveRequest 函数。

如果验证不起作用,我真正想做的是不抛出任何异常。我想构建自己的响应并将其发回。

我该怎么做?我根本不想发回 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;
            }

看来我必须抛出异常?

谢谢

【问题讨论】:

    标签: c# .net wcf soap service


    【解决方案1】:

    考虑使用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

    【讨论】:

      猜你喜欢
      • 2020-01-09
      • 2017-03-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      相关资源
      最近更新 更多