XML元素丢失时,Web API参数不反序列化(为null)

时间:2018-11-25 04:55:48

标签: asp.net-web-api2

我为我的Web API定义了一个模型:

public class MyRequest
{
    public int id { get; set; }
    public string name { get; set; }
    public short? location { get; set; }
}

该函数将模型作为参数:

public MyResponse Post(MyRequest request)
{
    ...
    doSomeStuff();
    ...
}

我希望模型的名称和位置属性都是可选的。如果未传递它们,则函数应将其视为null并以此进行评估。

当数据作为JSON传递时,这很好用:

{
    "id":100,
    "location":1
}

请求被反序列化,并且对象的ID为100,名称为null,位置为1。

但是,这不适用于XML:

<MyRequest>
    <id>100</id>
    <location>1</location>
</MyRequest>

请求对象为null-我认为是因为该对象无法反序列化。如果我将缺少的元素添加到XML请求中,它将正常工作。因此,我知道XML /调用的功能和格式是正确的。缺少元素只是一个问题。

我尝试将[XmlElement(IsNullable = true)]添加到我希望使其可选的属性中,但这没什么区别。

注意:我使用的是XmlSerializer,而不是默认的DataContractSerializer。

任何帮助将不胜感激。

0 个答案:

没有答案