2011-05-07 92 views
3

我遇到了我的WCF数据服务的问题。其中一个表包含太多返回的数据(大约80个字段),因此只有一个记录超出了大小限制(根据估计超过60k),但我无法准确判断,因为邮件不能被看作是消息输出的中断)。如何解决WCF数据服务中的默认邮件大小限制

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

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

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

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

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

回答

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

要在WCF数据服务中使用JSON,您需要WCF数据服务工具包,可在http://wcfdstoolkit.codeplex.com处免费下载。

这使得在“$格式= json的”大头钉到您的REST查询结束后,作为选项:

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