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);
}