Я вижу поведение ядра ASP.NET, которое просто не понимаю.Для воспроизведения:
Создайте новое приложение, используя шаблон API (сейчас его используют Microsoft.AspNetCore.All 2.0.8
).
Измените контроллер значений следующим образом:
[HttpGet]
public IActionResult Get()
{
var xmlContent = new System.Xml.XmlDocument();
xmlContent.LoadXml("<MyData><StringProperty>foo</StringProperty></MyData>");
return new OkObjectResult(xmlContent);
}
Выполнитьприложение и нажмите этот API с помощью accept: application / xml, например:
GET http://localhost:3287/api/values HTTP/1.1
User-Agent: Fiddler
Host: localhost:3287
Accept: application/xml
. Вы получите следующий результат:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Kestrel
X-Powered-By: ASP.NET
Date: Fri, 25 May 2018 22:55:00 GMT
Content-Length: 35
{"MyData":{"StringProperty":"foo"}}
Клиент запросил XML с сервера, серверабыл результат XML, и все же возвратил JSON.
Мне известны различные обходные пути (например, использование ContentResult), но я хотел бы понять, является ли это ожидаемым поведением и если да, то почему?