2011-05-07 50 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