Asp.net web api 在ASP.NET Web API XML响应中处理特殊字符和序列化异常

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响应对

我使用以下配置更改使ASP.NET Web API在其默认的
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,如果他们可以很容易地复制的话。