Web Api 2 - 当变量包含“&”符号时,FromBody对象始终为null

时间:2016-11-22 18:14:28

标签: xml asp.net-web-api2

我指定了一个使用[FromBody]读取请求体的端点,但是,当其中一个字段包含&符号(&)时,该值始终为null。有问题的客户端正在将XML传递给端点。

public IHttpActionResult CreateStage([FromBody] JobStageWrapper stage)

JobStageWrapper对象

public class JobStageWrapper
{
    public JobStage job { get; set; }
}

舞台对象

public class JobStage
    {
        public string jobno { get; set; }
        // Job Stage
        public string jobStage { get; set; }
        // Stage Date
        public DateTime StageDate { get; set; }
        public string Memo { get; set; }
    }

所以,例如:

<memo>My name is Adam & I live in England</memo> 

返回null

<memo>My name is Adam and I live in England</memo>

返回填充的对象

有没有办法拦截请求体来替换这些特殊字符,以便始终完全填充对象?

谢谢!
亚当

1 个答案:

答案 0 :(得分:1)

  

...其中一个字段包含&符号(&amp;)。有问题的客户端正在将XML传递给端点。

客户端应确保转义xml。 &符号应以&amp;

传递

这不是有效的xml元素

<memo>My name is Adam & I live in England</memo> 

但这是

<memo>My name is Adam &amp; I live in England</memo> 

请参阅List of XML and HTML character entity references - &gt; Predefined entities in XML部分,列出了需要转义的XML特殊字符列表。

或者这是从上一个答案复制到SO What characters do I need to escape in XML documents?的列表。

"   &quot;
'   &apos;
<   &lt;
>   &gt;
&   &amp;