Я создал веб-сервис MVC. Служба принимает httppost с XML-файлом, который представляет билет.
Не все поля XML передаются в экземпляр объекта билета.
Однако, когда я изменяю порядок узлов в файле XML, другие поля фиксируются.
Но я не могу найти никакой логики в этом.
TicketController:
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, Priority и Subject обновляются в объекте Ticket. Все остальные поля пусты
Когда я меняю порядок в файле 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, Priority и LongDescription, как и Ticket.Email, который заполняется и сейчас.
Когда я меняю порядок в файле 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">
<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>
Теперь: тикет. Электронная почта и тикет. Тема заполнена, но тикет. Длинное описание и тикет. Приоритет больше не существует
Какая логика? Почему не заполнены все поля заявки?