Por que meu ASP.Net Core Web API Controller não retornará XML?
Eu tenho o seguinte controlador de API da Web simples:
// GET: api/customers
[HttpGet]
public async Task<IActionResult> Get()
{
var customers = await uow.Users.GetAllAsync();
var dto = customers.Select(p => new CustomerDto {Id = p.Id, Email = p.Email, UserName = p.UserName});
return Ok(dto); // IEnumerable<CustomerDto>
}
No Postman, estou configurando o cabeçalho Accept paraapplication/xml
, mas não importa o que eu tente, só posso recuperar dados JSON.
Li em algum lugar que, para obter XML, devo adicionar[DataContract]
e[DataMember]
atributos ao meu DTO, que agora se parece com isso:
[DataContract]
public class CustomerDto
{
[DataMember]
public string Id { get; set; }
[Required]
[EmailAddress]
[Display(Name = "Email")]
[DataMember]
public string Email { get; set; }
[Required]
[Display(Name = "Login Name")]
[DataMember]
public string UserName { get; set; }
}
Estou nisso há várias horas e não vejo por que não funciona. Eu tentei:
Tornando o método de ação síncrono e assíncronoRetornando os dados diretamente e configurando o tipo de retorno comoIEnumerable<CustomerDto>
Convertendo a coleção em uma matriz em vez de em uma listaRetornando umIActionResult
Retornando um único item, em vez de uma coleçãoEu verifiquei que o cabeçalho Accept está aparecendo na solicitação, examinando-o no depurador.Muitos "pesquisando no Bing" e lendo vários blogsCriando um novo projeto WebAPI a partir do modelo e verificando se há alguma inspiração (realmente não).
Espero que seja simples, mas não consigo ver ...