WebApi强制操作返回xml

Iva*_*ono 10 c# xml asp.net-web-api

我有这个动作:

public IHttpActionResult SearchFor(int aboItemType, DTO.FilterColumns filter)
{
    //Do stuff...
    return Ok<DataSet>(ds);
}
Run Code Online (Sandbox Code Playgroud)

我的客户做了:

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);
}
Run Code Online (Sandbox Code Playgroud)

上述场景非常有效.但是,如果我对Accept行进行注释,则该操作将以json格式返回数据集.

我想强制这一个特定的操作总是在xml中发送结果.这可能吗?也许有一个属性?

Ily*_*lya 25

我用了 ?onfiguration.Formatters.XmlFormatter

public IHttpActionResult Get()
{
 ...
  return Content(HttpStatusCode.OK, Model, Configuration.Formatters.XmlFormatter);
}
Run Code Online (Sandbox Code Playgroud)

  • @ Ivan-MarkDebono - 你可以使用`Content()`(而不是`Request.CreateResponse`或你的`Ok()`)并使用上面的参数,这确实创建了一个`IHttpActionResult`,但仍然不确定这是否是(一部分)正确的解决方案. (2认同)