【问题标题】:WCF REST returing always XML by defaultWCF REST 默认总是返回 XML
【发布时间】:2013-06-16 21:41:03
【问题描述】:

我在 .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?

【问题讨论】:

    标签: .net json wcf


    【解决方案1】:

    来自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 扩展)来测试您的服务调用。

    请参阅MSDN doc,了解如何配置 WCF svcs 对请求的行为方式。

    【讨论】:

    • 奇怪,我有另一个项目默认返回 json,具有相同的配置:S
    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多