我正在点击以下控制器并在return result;
上有一个断点:
[HttpGet]
[ResponseType(typeof(PriceResponse))]
[Route("Account/{id:int}/Price")]
public IHttpActionResult Get(int id)
{
var price = _priceService.GetPrice(id);
var result = Ok(price);
return result;
}
我手动将result.Formatters[0].SupportedMediaTypes[0].MediaType
和result.Formatters[0].MediaTypeMappings[0].MediaType.MediaType
的值从"application/json"
更改为"application/xml"
。
但是,当我在Chrome的Advanced Rest Client中查看结果时,它会在标题中正确显示Content-Type: application/xml; charset=utf-8
,但“原始”响应正文仍为JSON格式。
如何以XML格式显示它?
编辑:我在请求的标题中有以下内容:
Svc-Channel: 302
Accept: application/xml
我尝试点击“选项”并将下拉菜单设置为“application / xml”,但正文仍以JSON格式显示。
答案 0 :(得分:1)
我将假设(基于属性)您正在使用Web API。
您在这里玩的内容称为内容协商。 Web API有一个很好的默认实现,记录在here。控制它的最简单方法是使用"接受"标题并传递所需的返回类型。 Web Api自然会通过它的管道来处理所有这些。你需要做的就是使用"接受"请求中的标题。