【发布时间】:2018-10-24 12:04:58
【问题描述】:
我正在尝试在 wcf 服务中实现自定义错误处理程序,以便在错误时返回未包装的字符串
public void ProvideFault(Exception error,
MessageVersion version,
ref Message fault)
{
fault = CreateError(error.Message);
SetContentType();
}
private static void SetContentType()
{
if (WebOperationContext.Current != null)
{
var response = WebOperationContext.Current.OutgoingResponse;
response.ContentType = "text/plain";
}
}
private static Message CreateError(string message)
{
var fault = Message.CreateMessage(MessageVersion.None, "", message);
return fault;
}
此代码导致响应标题为“text/plain”,但错误消息仍被序列化为 xml
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Bad Request</string>
当我向创建的消息添加原始格式时
private static Message CreateError(string message)
{
var fault = Message.CreateMessage(MessageVersion.None, "", message);
fault.Properties.Add(WebBodyFormatMessageProperty.Name, new WebBodyFormatMessageProperty(WebContentFormat.Raw));
return fault;
}
服务完全停止返回。从 wcf 返回未包装字符串错误的方法是什么?有一个从 ystem.ServiceModel.Channels, m.b. 派生的内部 StringMessage 类。我可以以某种方式实例化它吗?
【问题讨论】:
标签: c# rest wcf error-handling