WebAPI принудительное действие для возврата xml
у меня есть это действие:
public IHttpActionResult SearchFor(int aboItemType, DTO.FilterColumns filter)
{
//Do stuff...
return Ok<DataSet>(ds);
}
мой клиент:
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
var response = client.PostAsJsonAsync(myurl).Result;
if (response.IsSuccessStatusCode)
{
var results = HttpUtility.HtmlDecode(response.Content.ReadAsStringAsync().Result);
}
приведенный выше сценарий работает отлично. Однако, если я комментирую строку Accept, действие возвращает набор данных в формате json.
Я хотел бы заставить это одно конкретное действие всегда отправлять результат в xml. Возможно ли это? Может быть с атрибутом?
2 ответов
Я Сonfiguration.Formatters.XmlFormatter
public IHttpActionResult Get()
{
...
return Content(HttpStatusCode.OK, Model, Configuration.Formatters.XmlFormatter);
}
также вы можете сделать это (в случае, если вам нужно передать некоторые значения заголовка http):
public IHttpActionResult Get()
{
var result = Request.CreateResponse(HttpStatusCode.OK,
model,
Configuration.Formatters.XmlFormatter);
result.Headers.Add("Access-Control-Allow-Origin", "*");
return ResponseMessage(result);
}