当我在WCF服务中引发异常时。内置的WebErrorHandler异常处理程序本身无法尝试访问OperationContext.Current.IncomingMessageProperties,因为它似乎已被处置。结果是实际错误被屏蔽了,我总是得到一个HTML错误输出。
为什么要处理我的IncomingMessageProperties?该服务返回一个流 - 不确定它是否相关。
答案 0 :(得分:0)
我发现了问题。我正在创建一个WebFaultException。现在我创建一个普通的Exception并使用IErrorHandler将它正确地序列化到客户端。
答案 1 :(得分:0)
当我尝试从另一个方法而不是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;
}