【发布时间】:2015-10-18 13:28:15
【问题描述】:
我正在点击以下控制器并在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 格式显示。
【问题讨论】:
-
在请求标头中传递
Accept:application/xml,看看会发生什么。删除Content-Type- 在HTTPGET中传递内容类型标头是没有意义的。 -
尝试检查请求的 Accept 标头 - 它可能设置为 application/json。如果是这样,请将其更改为 application/xml。
-
我刚刚尝试过,但没有成功。我会更新我的问题。
-
你能告诉我们
endpointBehavior来自你的web.config吗?并且还使用WebInvoke属性并将ResponsenceFormat.Xml设置为返回类型。