WCF 4.0:WebMessageFormat.Json 无法与 WCF REST 模板一起使用

问题描述 投票:0回答:5

位置下载 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。这是我对该模板所做的唯一更改。

我错过了什么?

谢谢!

wcf
5个回答
56
投票

想通了。 standardendpoint 的

automaticFormatSelectionEnabled
属性应设置为
false
,defaultOutgoingReponseFormat 应设置为
Json

<standardEndpoint name="" helpEnabled="true" 
    automaticFormatSelectionEnabled="false" 
    defaultOutgoingResponseFormat ="Json" />

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”)

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)]`

1
投票

点击 -> 参考链接

“启用自动格式选择后,基础设施会解析请求消息的 Accept 标头并确定最合适的响应格式。如果 Accept 标头未指定合适的响应格式,则基础设施将使用请求消息的 Content-Type或操作的默认响应格式。”

编辑:此链接可能会让您继续前进 http://blogs.msdn.com/b/endpoint/archive/2010/11/01/wcf-webhttp-service-returns-http-415-unsupported-media-type.aspx


0
投票

每次尝试创建 JSON Web 服务时,我都会遇到这样的问题。

现在,我只需按照此处显示的步骤操作即可。

https://web.archive.org/web/20180331113359/http://mikesknowledgebase.com/pages/Services/WebServices-Page1.htm

它通过屏幕截图和示例逐步展示了如何创建 JSON Web 服务。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.