webapi frombody xml blank with declaration

时间:2014-11-14 23:39:35

标签: c# xml asp.net-web-api

我有一个运行katana的asp.net webapi v2,并使用XmlSerializer和一个非常简单的自定义序列化实现:

config.Formatters.XmlFormatter.UseXmlSerializer = true;
config.Formatters.XmlFormatter.SetSerializer<SalesOrder>(new XmlSerializer<SalesOrder>());

XmlSerializer只是System.Runtime.Serialization.XmlObjectSerializer抽象类的简单实现

在调用这样的帖子时:

public HttpResponseMessage Post([FromBody]SalesOrder value)
{
    return value == null || value.SignZoneCustomerNumber.IsNullOrEmpty()
        ? Request.CreateResponse(HttpStatusCode.BadRequest)
        : Request.CreateResponse(HttpStatusCode.Accepted, _service.CreateOrder(value, Request.GetCorrelationId()));
}

当xml包含类似

的声明时,该值为null
<?xml version="1.0" encoding="ISO-8859-15"?>

删除声明并将其发送到desearilizes罚款。

知道为什么声明导致deseriazation失败?

模型的定义如下:

[XmlRoot("Order")]
[Serializable]
public class SalesOrder : BaseOrder<SalesOrderLineItem>
{
    public string PoNumber { get; set; }
    public DateTime? PoDate { get; set; }

    ...more properties...
}

由于

更新

原来是导致问题的编码 这个标题有效:

<?xml version="1.0" encoding="UTF-8"?>

其他值如UTF-16和ISO-8859-1失败 知道为什么吗?

0 个答案:

没有答案