Odata 如何绕过WCF数据服务中的默认消息大小限制

Odata 如何绕过WCF数据服务中的默认消息大小限制,odata,wcf-data-services,Odata,Wcf Data Services,我的WCF数据服务遇到问题。其中一个表包含太多数据,无法返回(大约80个字段),因此只有一条记录超出了大小限制(估计超过60k,我无法准确判断,因为消息输出中断导致无法看到消息) 到目前为止,我发现有两种方法可以解决这个问题 以提高邮件大小限制 将数据传输格式更改为Json 对于这两种解决方案,都存在一些需要克服的问题 web上有很多文章解释如何配置WCF服务来更改缓冲区大小或读卡器配额。但我不知道WCF数据服务是如何工作的,因为官方文档没有说明如何以声明方式配置WCF数据服务。WCF数据

我的WCF数据服务遇到问题。其中一个表包含太多数据,无法返回(大约80个字段),因此只有一条记录超出了大小限制(估计超过60k,我无法准确判断,因为消息输出中断导致无法看到消息)

到目前为止,我发现有两种方法可以解决这个问题

  • 以提高邮件大小限制
  • 将数据传输格式更改为Json
对于这两种解决方案,都存在一些需要克服的问题

  • web上有很多文章解释如何配置WCF服务来更改缓冲区大小或读卡器配额。但我不知道WCF数据服务是如何工作的,因为官方文档没有说明如何以声明方式配置WCF数据服务。WCF数据服务是否支持相同的配置隐喻?如何实现这一目标

  • WCF数据服务客户端库似乎不支持现成的json格式。我必须自己实现相同的功能。我这里的问题是,在C#中是否存在ODataJSON解析器

对于问题#1,请查看主题,其中包括此WCF配置,以使用WCF数据服务启用OData服务之间的大型消息:

 <system.serviceModel>
 <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
 <services>
     <!-- The name of the service -->
     <service name="PhotoService.PhotoData">
         <!--you can leave the address blank or specify your end point URI-->
         <endpoint binding="webHttpBinding" 
           bindingConfiguration="higherMessageSize" 
           contract="System.Data.Services.IRequestHandler"></endpoint>
     </service>
 </services>
 <bindings>
     <webHttpBinding>
         <!-- configure the maxReceivedMessageSize value to suit the max size of 
                  the request (in bytes) you want the service to receive-->
         <binding name="higherMessageSize" transferMode="Streamed"  
          maxReceivedMessageSize="2147483647"/>
     </webHttpBinding>
 </bindings>


对于问题2,WCF数据服务客户端不支持JSON,只支持Atom XML。您是否尝试过这篇文章,它似乎提供了一些关于从客户机上的数据服务解析JSON的其他替代方法的有用信息

要在WCF数据服务中使用JSON,您需要WCF数据服务工具包,可在免费下载

这使选项能够将“$format=json”附加到REST查询的末尾,如下所示:

http://myservice/Products?$format=json