WCF ResponseFormat JSON返回Fiddler中的Json,Chrome / Firefox中的Xml!

时间:2011-02-09 07:21:24

标签: c# wcf json

您好我有一个WCF Rest 4.0项目。出于某种原因,我有一个Web服务应该返回Json,如果我通过fiddler点击端点,但是通过firefox或chrome,如果我输入地址我得到xml。怎么回事?

感谢您的帮助!这是代码。

有问题的网络服务:

  [OperationContract]
  [WebGet(UriTemplate = "",                  
          ResponseFormat = WebMessageFormat.Json,
          RequestFormat = WebMessageFormat.Json)]

        public SomeObject [] GetObjects()
        {
              .....

目标代码:

[DataContract]
public class SomeObject
{      
        [DataMember]
        public string Date { get; private set; }

        ....
            public String Site { get; private set; }

4 个答案:

答案 0 :(得分:2)

我发布此评论作为评论,但我会在此处添加更多详细信息。

您的浏览器很可能会发送此标题:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

请注意,它没有提到json,但确实提到了xml。

您的WCF客户端很可能使用不同的“Accept”标头,该标头优先选择json。你可以在Fiddler中查看。

答案 1 :(得分:1)

如果您使用的是.NET 4.0框架,那么这就是解决方案:http://karnicki.eu/2011/02/rest-wcf-net-4-0-service-with-json-jsonp-for-jquery/

WCF现在支持JSONP,只需要很少的配置。

基本上你只需编辑/添加两个配置文件条目,authenticationMode和StandardEndpoint,瞧,你可以在任何浏览器中查看你的WCF服务的json响应。

编辑:原始链接已关闭 - 这可能有所帮助:http://blog.shutupandcode.net/?p=696

答案 2 :(得分:0)

浏览器无法显示原始JSON,但您可以使用JSON查看器之类的工具 (http://jsonviewer.codeplex.com/wikipage?title=Home&ProjectName=jsonview)或Fiddler也适合这项工作。

答案 3 :(得分:0)

我遇到了同样的问题。 I used a WCF configuration with no svc

我必须从true更改web.config中的这个布尔值:

<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>

为假:

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