Поля XML веб-службы MVC не сохранены - PullRequest
0 голосов
/ 12 сентября 2018

Я создал веб-сервис 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>

Теперь: тикет. Электронная почта и тикет. Тема заполнена, но тикет. Длинное описание и тикет. Приоритет больше не существует

Какая логика? Почему не заполнены все поля заявки?

1 Ответ

0 голосов
/ 18 октября 2018

Поля в запросе XML должны быть в алфавитном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...