0

我在 .svc 上定义了一个 WCF 服务:

<%@ ServiceHost Language="C#" Debug="true" Service="OL4RENT.WebService.BienWSREST" CodeBehind="BienWSREST.svc.cs"  Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

界面:

  [WebeInvoke( Method = "GET",
  ResponseFormat=WebMessageFormat.Json,
  BodyStyle = WebMessageBodyStyle.Bare,
  UriTemplate = "/{tipo}/{bienId}")]
  DataBien VerBien(string tipo, string bienId);

所以它应该默认返回 Json 但如果我通过浏览器进行正常请求,我会得到 xml 格式的响应!如果请求具有 Content-Type = application/json,我只会得到 Json。

如何配置默认行为以返回 json?

4

1 回答 1

0

来自MSDN doc:如果请求消息包含 Accept 标头,Windows Communication Foundation (WCF) 基础结构将搜索它支持的类型。

默认情况下,浏览器会在每个请求的 Accept 标头中添加很多内容。有关详细信息,请参阅http://www.gethifi.com/blog/browser-rest-http-accept-headers 。底线是您使用的浏览器在标头中的“application/json”(如果它甚至有)之前有“application/xml”,从而导致 WCF 内部返回 XML。

最好使用一个 REST 客户端(例如 Fiddler、Chrome 或 FF 的 RESTClient 扩展)来测试您的服务调用。

有关如何配置 WCF svcs 对请求的行为方式,请参阅MSDN 文档。

于 2013-06-16T23:41:50.373 回答