您好我有一个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; }
答案 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"/>