WebApi强制操作返回xml

时间:2014-03-27 08:25:01

标签: c# xml asp.net-web-api

我有这个动作:

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 个答案:

答案 0 :(得分:25)

我使用了Сonfiguration.Formatters.XmlFormatter

public IHttpActionResult Get()
{
 ...
  return Content(HttpStatusCode.OK, Model, Configuration.Formatters.XmlFormatter);
}

答案 1 :(得分:0)

你也可以这样做(如果你必须传递一些http标头值):

public IHttpActionResult Get()
{
    var result = Request.CreateResponse(HttpStatusCode.OK, 
                                        model,
                                        Configuration.Formatters.XmlFormatter);

    result.Headers.Add("Access-Control-Allow-Origin", "*");

    return ResponseMessage(result);
}