WCF 休息服务不返回 JSON 数据。但它适用于 XML
Posted
技术标签:
【中文标题】WCF 休息服务不返回 JSON 数据。但它适用于 XML【英文标题】:WCF Rest Service is not returning JSON data. But It works for XML 【发布时间】:2015-09-15 20:10:48 【问题描述】:服务合同信息如下 服务合同:
[OperationContract]
[FaultContract(typeof(DcCustomFaultMessage))]
[WebInvoke(Method="GET", ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/GetCustomData")]
List<DcCustomData> GetCustomData();
以及此处的配置详细信息 配置:
<system.serviceModel>
<services>
<service name="MyService" behaviorConfiguration="MyServiceBehavior">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="MyServiceBinding" behaviorConfiguration="web" contract="IMyService"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="True"/>
<serviceTimeouts transactionTimeout="05:00:00"/>
<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web" >
<webHttp helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json" />
</behavior>
</endpointBehaviors>
</behaviors>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json"/>
</webHttpEndpoint>
</standardEndpoints>
<bindings>
<webHttpBinding>
<binding name="MyServiceBinding">
<security mode="None"/>
</binding>
</webHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<diagnostics performanceCounters="All"/>
当我调试时,GetCustomData() 返回列表。但是当我在浏览器上检查它时什么都没有返回..没有错误信息。请帮帮我
【问题讨论】:
如果我更改 ResponseFormat = WebMessageFormat.Xml ,它适用于 Xml\ 【参考方案1】:请配置 WCF 消息记录并使用 svctraceviewer 工具查看可能在幕后发生的实际错误:
<configuration>
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
<listeners>
<add name="wcfTraceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="E:\Errors\WcfTrace.svclog" traceOutputOptions="DateTime" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
https://msdn.microsoft.com/en-us/library/ms731859%28v=vs.110%29.aspx
【讨论】:
以上是关于WCF 休息服务不返回 JSON 数据。但它适用于 XML的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Json.Net 从我的 WCF 休息服务(.NET 4)返回 json,而不是用引号括起来的字符串?