Не удается получить XML в аргументе контроллера

#asp.net-core #asp.net-core-2.0

#asp.net-core #asp.net-core-2.0

Вопрос:

Я хочу получить в контроллере XML-объект, но я всегда получаю нулевой объект.

Похоже, что
XmlDataContractSerializer Output Formatter() работает, потому что я могу выводить XML в другом случае, но XmlDataContractSerializer Input Formatter()) не работает;

Я попытался использовать setupAction.AddXmlDataContractSerializerFormatters()
или передайте аргумент в
setupAction.Входные параметры.Добавить(новый XmlDataContractSerializerInputFormatter(setupAction))

но ничего не работает

 services.AddMvc(setupAction =>
            {
                setupAction.ReturnHttpNotAcceptable = true;
                setupAction.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
                setupAction.InputFormatters.Add(new XmlDataContractSerializerInputFormatter());
            });
 
  [HttpPost]
        public ActionResult CreateAuthor([FromBody] AuthorForCreationDto author)
        {
            if (author is null)
            {
                return BadRequest();
            }
...
}
 
 public class AuthorForCreationDto
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTimeOffset DateOfBirth { get; set; }
        public string Genre { get; set; }
        public ICollection<BookForCreationDto> Books { get; set; }
        = new List<BookForCreationDto>();
    }
 

XML

 <AuthorForCreationDto xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Library.API.Models">
        <DateOfBirth xmlns:d3p1="http://schemas.datacontract.org/2004/07/System">
            <d3p1:DateTime>1948-03-03T00:00:00Z</d3p1:DateTime>
            <d3p1:OffsetMinutes>0</d3p1:OffsetMinutes>
        </DateOfBirth>
        <FirstName>James</FirstName>
        <Genre>Thriller</Genre>
        <LastName>Ellroy</LastName>
</AuthorForCreationDto>
 

В postman я устанавливаю тип содержимого application / xml и принимаю application / json

Комментарии:

1. Попробуйте поместить ValidateInput(false) поверх контроллера.

2. Я добавил его, но мне нужно было установить ASP.NET.MVC dependencie, но событие, которое все еще не работает