Asp.net web api 在ASP.NET Web API XML响应中处理特殊字符和序列化异常
我使用以下配置更改使ASP.NET Web API在其默认的Asp.net web api 在ASP.NET Web API XML响应中处理特殊字符和序列化异常,asp.net-web-api,xmlserializer,Asp.net Web Api,Xmlserializer,我使用以下配置更改使ASP.NET Web API在其默认的DataContractSerializer上使用XmlSerializer GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true GlobalConfiguration.Configuration.Formatters.XmlFormatter.Indent = true Xml序列化问题: Web API的JSON响应对
DataContractSerializer
上使用XmlSerializer
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true
GlobalConfiguration.Configuration.Formatters.XmlFormatter.Indent = true
Xml序列化问题:
Web API的JSON响应对于下面给出的值工作正常,但在请求XML时失败
我尝试的内容:使用
GlobalConfiguration.Configuration.Formatters.XmlFormatter
.SupportedEncodings.Clear();
GlobalConfiguration.Configuration.Formatters.XmlFormatter
.SupportedEncodings.Add(new UnicodeEncoding());
处理例外情况:
我试图通过添加ExceptionFilterAttribute
public class ErrorHandlingFilter : ExceptionFilterAttribute
{
public override void OnException(
HttpActionExecutedContext actionExecutedContext)
{
....handle exception
}
}
并将过滤器注册为
config.Filters.Add(new ErrorHandlingFilter());
filters的OneException
方法是在ApicController的操作引发显式异常时调用的,而不是在我得到序列化异常时调用的
我有两部分的问题
我没有
1.
的完整答案,但您不需要像当前那样清除编码。您只需在此处发送适当的Accept Charset:utf-16
头即可实现所做的操作。同样对于2.
,您将无法在筛选器中捕获序列化异常,因为序列化发生在主机层的下方,并经过异常筛选器。可能是我做错了,但我尝试了你提到的字符,没有发现任何错误…你能分享更多信息吗?我猜当我复制粘贴的东西,它删除了非法字符得到替换。我添加了一个非法人物的截图,Donno,如果他们可以很容易地复制的话。