未捕获 MVC Web 服务 XML 字段



我创建了一个MVC Web服务。该服务接受带有表示票证的 XML 文件的 httppost 。 并非所有 XML 字段都传输到票证对象实例。 但是,当我更改 XML 文件中节点的顺序时,会捕获其他字段。 但我找不到任何逻辑。

票务控制器:

using System;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
namespace Webservice.Controllers
{
public class TicketController : ApiController
{
[HttpPost]
public async Task<string> Add(Ticket ticket)
{
return await Handler.CreateTicketAsync(ticket);
}
}
}

"门票"类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization;
namespace Eurosys.Freshdesk.Webservice.Models
{
[DataContract]
public class Ticket
{
[DataMember(Name = "id")]
public string Id { get; set; }
[DataMember(Name = "companyid")]
public string CompanyId { get; set; }
[DataMember(Name = "email")]
public string Email { get; set; }
[DataMember(Name = "contactname")]
public string ContactName { get; set; }
[DataMember(Name = "contactphone")]
public string ContactPhone { get; set; }
[DataMember(Name = "contactmobile")]
public string ContactMobile { get; set; }
[DataMember(Name = "priority")]
public int Priority { get; set; }
[DataMember(Name = "subject")]
public string Subject { get; set; }
[DataMember(Name = "long_description")]
public string LongDescription { get; set; }
}
}

我的XML文件如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Ticket xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Webservice.Models">
<id>1</id>
<companyid>2</companyid>  
<email>nomail@gmail.com</email>
<contactname>John Doe</contactname>   
<contactphone>3</contactphone>
<priority>1</priority>
<subject>testsubject</subject>   
<long_description>testdescription</long_description>
</Ticket>

字段 Id、优先级和主题在票证对象中更新。所有其他字段均为空

当我更改XML文件中的顺序时,例如。(所以在ID之前发送电子邮件(:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Ticket xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Webservice.Models">
<email>nomail@gmail.com</email>
<id>1</id>
<companyid>2</companyid>  
<contactname>John Doe</contactname>   
<contactphone>3</contactphone>
<priority>1</priority>
<subject>testsubject</subject>   
<long_description>testdescription</long_description>
</Ticket>

Ticket.Id,优先级和长描述已填充,Ticket.Email 现在也已填充。

当我更改XML文件中的顺序时,例如。(在ID之前的主题(:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Ticket xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Webservice.Models">
<email>nomail@gmail.com</email>
<subject>testsubject</subject>   
<id>1</id>
<companyid>2</companyid>  
<contactname>John Doe</contactname>   
<contactphone>3</contactphone>
<priority>1</priority>
<long_description>testdescription</long_description>
</Ticket>

现在:票。电子邮件和票证。主题已填满,但票证。详细描述和票证。不再优先

逻辑是什么?为什么不是所有的票面都填满了?

XML 请求中的字段必须按字母顺序排列。

最新更新