从this位置下载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。这是我对该模板所做的唯一改变。
我错过了什么?
谢谢!
答案 0 :(得分:56)
想通了。 standardendpoint的automaticFormatSelectionEnabled
属性应设置为false
,defaultOutgoingReponseFormat应设置为Json
。
<standardEndpoint name="" helpEnabled="true"
automaticFormatSelectionEnabled="false"
defaultOutgoingResponseFormat ="Json" />
答案 1 :(得分:6)
<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”)答案 2 :(得分:5)
对我来说,在WebGet属性中将响应格式设置为JSON不起作用。在方法体中设置它;
// This works
WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;
return jsonData;
// This doesn't work
`[WebGet(UriTemplate = "/conditions?term={term}", ResponseFormat = WebMessageFormat.Json)]`
答案 3 :(得分:1)
点击 - &gt; reference links
“启用自动格式选择后,基础结构会解析请求消息的Accept标头并确定最合适的响应格式。如果Accept标头未指定合适的响应格式,则基础结构使用的内容类型请求消息或操作的默认响应格式。“
编辑:此链接可能会让您前进 http://blogs.msdn.com/b/endpoint/archive/2010/11/01/wcf-webhttp-service-returns-http-415-unsupported-media-type.aspx
答案 4 :(得分:0)
每当我尝试创建JSON Web服务时,我都会遇到这样的问题。
现在,我只需按照此处显示的步骤进行操作。
http://mikesknowledgebase.com/pages/Services/WebServices-Page1.htm
它展示了如何使用屏幕截图和示例逐步创建JSON Web服务。
希望这有帮助。