从此位置下载 WCF REST 模板。
默认的响应格式是 XML,效果很好。但是,当我尝试获取 JSON 响应时,我仍然得到 XML。
这是我修改后的代码-
[WebGet(UriTemplate = "",ResponseFormat = WebMessageFormat.Json)]
public List<SampleItem> GetCollection()
{
// TODO: Replace the current implementation to return a collection of SampleItem instances
return new List<SampleItem>() { new SampleItem() { Id = 1, StringValue = "Hello" } };
}
注意 ResponseFormat=WebMessageFormat.Json。这是我对该模板所做的唯一更改。
我错过了什么?
谢谢!
想通了。 standardendpoint 的
automaticFormatSelectionEnabled
属性应设置为 false
,defaultOutgoingReponseFormat 应设置为 Json
。
<standardEndpoint name="" helpEnabled="true"
automaticFormatSelectionEnabled="false"
defaultOutgoingResponseFormat ="Json" />
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
更改 web.config 中的 2 个属性即可修复此问题:
automaticFormatSelectionEnabled=false
defaultOutgoingResponseFormat=Json
(编辑:来自“true”)对我来说,在 WebGet 属性中将响应格式设置为 JSON 不起作用。将其设置在方法主体中即可;
// This works
WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;
return jsonData;
// This doesn't work
`[WebGet(UriTemplate = "/conditions?term={term}", ResponseFormat = WebMessageFormat.Json)]`
点击 -> 参考链接
“启用自动格式选择后,基础设施会解析请求消息的 Accept 标头并确定最合适的响应格式。如果 Accept 标头未指定合适的响应格式,则基础设施将使用请求消息的 Content-Type或操作的默认响应格式。”
编辑:此链接可能会让您继续前进 http://blogs.msdn.com/b/endpoint/archive/2010/11/01/wcf-webhttp-service-returns-http-415-unsupported-media-type.aspx
每次尝试创建 JSON Web 服务时,我都会遇到这样的问题。
现在,我只需按照此处显示的步骤操作即可。
它通过屏幕截图和示例逐步展示了如何创建 JSON Web 服务。
希望这有帮助。