如何解决WCF数据服务中的默认邮件大小限制

时间:2011-05-07 02:25:08

标签: odata wcf-data-services

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

到目前为止,我发现它可以通过两种方式解决。

  • 提高邮件大小限制。
  • 将数据传输格式更改为Json。

对于这两种解决方案都有一些问题需要克服。

  • Web上有很多文章介绍如何配置WCF服务以更改缓冲区大小或读者配额。但我不知道WCF数据服务是如何工作的,因为官方文档没有说明如何以声明方式配置WCF数据服务。 WCF数据服务是否支持相同的配置隐喻?以及如何实现它?

  • WCF数据服务客户端库似乎不支持开箱即用的json格式。我必须自己实现相同的功能。我的问题是,在C#中存在任何odata json解析器吗?

2 个答案:

答案 0 :(得分:1)

对于问题#1,请查看主题Streaming Provider (WCF Data Services),其中包含此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。您是否尝试过帖子Using System.Json for non-Silverlight projects?,它似乎对于从客户端上的数据服务解析JSON的其他备选方案有一些有用的信息。

答案 1 :(得分:1)

要将JSON与WCF数据服务一起使用,您需要WCF数据服务工具包,可以http://wcfdstoolkit.codeplex.com免费下载。

这使得选项可以在REST查询结束时使用“$ format = json”,如:

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