0

DataContractSerializer我使用以下配置更改使 ASP.NET Web API 使用 XmlSerializer 而非默认值。

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true

GlobalConfiguration.Configuration.Formatters.XmlFormatter.Indent = true

XML序列化问题:

Web API 的 JSON 响应适用于下面给出的值,但在请求 XML 时失败。

在此处输入图像描述

我尝试了什么:使用将 SupportedEncodings 添加到 XMLSerializer

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());

OnException当 ApiController 的操作引发显式异常时调用过滤器的方法,而不是当我得到序列化异常时?

我有两部分的问题

  1. 如何避免在响应中对特殊字符进行编码时出现问题?
  2. 我怎样才能捕捉到这些序列化异常。
4

0 回答 0