Wcf System.ServiceModel.Channels.MessageProperties对象已被释放

Wcf System.ServiceModel.Channels.MessageProperties对象已被释放,wcf,Wcf,当我在WCF服务中引发异常时。内置WebErrorHandler异常处理程序本身无法尝试访问OperationContext.Current.IncomingMessageProperties,因为它似乎已被释放。结果是真正的错误被掩盖了,我总是得到一个HTML错误输出 为什么要处置我的收入和财产?服务返回一个流-不确定这是否相关。我发现了问题。我正在创建一个WebFaultException。现在,我创建了一个普通异常,并使用IErrorHandler将其正确序列化到客户端。当我尝试从另一个方

当我在WCF服务中引发异常时。内置WebErrorHandler异常处理程序本身无法尝试访问OperationContext.Current.IncomingMessageProperties,因为它似乎已被释放。结果是真正的错误被掩盖了,我总是得到一个HTML错误输出


为什么要处置我的收入和财产?服务返回一个流-不确定这是否相关。

我发现了问题。我正在创建一个WebFaultException。现在,我创建了一个普通异常,并使用IErrorHandler将其正确序列化到客户端。

当我尝试从另一个方法(而不是OperationContract方法)访问OperationContext.Current.IncomingMessageProperties时,就会发生这种情况

访问OperationContext.Current.IncomingMessageProperties的步骤 创建OperationContext的extencion方法以访问属性

大概是这样的:

public static string GetClientIP(this OperationContext context)
        {
            string ip = "";
            MessageProperties messageProperties = context.IncomingMessageProperties;
            RemoteEndpointMessageProperty endpointProperty =
              messageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;

            if (endpointProperty != null)
            {
                 ip = endpointProperty.Address;
            }

            return ip;
        }