2011-01-13 24 views
0

我有一個使用WebServiceHostFactory(REST)實現的WCF服務。當JSON對象有一個長字符串時,WCF(Rest)服務錯誤

我正在調用一個服務端點作爲POST發送一個json對象,該對象具有一個字符串屬性。

這工作到一定程度,但似乎如果該字符串的長度變得太長(不確定究竟有多長(8000字符的作品,但9000不......)我沒有嘗試,但'突破點'可能是8192)

我試圖檢查在回調這對於較小的字符串工作正常,但的StatusCode時的刺痛是「太長」下面的錯誤代碼:

System.Net.WebException: The remote server returned an error: NotFound. 

回調代碼:

var request = (HttpWebRequest)result.AsyncState; 
var response = (HttpWebResponse)request.EndGetResponse(result); 

我想弄清楚問題出在哪裏,因爲服務存在,我只在字符串太長時纔得到這個。

它是json對象的大小嗎?這是我的服務定義嗎?這是WCF中的東西嗎?

謝謝

回答

1

我認爲它是來自讀者配額的MaxStringContentLength屬性的問題。它的默認值是8192確實可以在綁定配置更改值:

<system.serviceModel> 
    <bindings> 
    <webHttpBinding> 
     <binding name="LargeString"> 
     <readerQuotas maxStringContentLength="16000" /> 
     </binding> 
    </webHttpBinding> 
    </bindings> 
</system.serviceModel> 

參考您的端點配置此綁定配置:

<endpoint address="..." contract="..." binding="webHttpBinding" bindingConfiguration="LargeString" /> 

在WCF 4.0的情況下,你可以在綁定省略名定義,它應該用作所有webHttp端點的默認配置。

0

我可以想到一個原因而不知道它。也許你超過了最大消息長度?這可以在你的App.Config文件中設置。

如果您有大量的數據要傳輸,您可以使用流式處理或構建自己的API,就像遊標在SQL中工作一樣。

相關問題