WCF 4.0:WebMessageFormat.Json不使用WCF REST模板

时间:2010-09-23 18:44:02

标签: wcf

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。这是我对该模板所做的唯一改变。

我错过了什么?

谢谢!

5 个答案:

答案 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服务。

希望这有帮助。