2010-06-01 25 views
1

我有接受一個JSON字符串WCF - 對REST服務增加ReaderQuoatas

其中一個參數的WCF REST服務是數字

這導致以下錯誤的大串 - 它通過跟蹤可見並使用SVC跟蹤查看器

反序列化CarConfiguration類型的對象時出現錯誤。讀取XML數據時,超過了最大字符串內容長度限額(8192)。可以通過更改創建XML閱讀器時使用的XmlDictionaryReaderQuotas對象上的MaxStringContentLength屬性來增加此配額。

現在我讀過建議如何糾正這種

所有這些推薦的服務器和客戶端

例如在增加各種配置設置的文章種種 Error Serializing String in WebService call

http://bloggingabout.net/blogs/ramon/archive/2008/08/20/wcf-and-large-messages.aspx

http://social.msdn.microsoft.com/Forums/en/wcf/thread/f570823a-8581-45ba-8b0b-ab0c7d7fcae1

所以我的配置文件看起來像這樣

<webHttpBinding> 
     <binding name="webBinding" maxBufferSize="5242880" maxReceivedMessageSize="5242880" > 
      <readerQuotas maxDepth="5242880" maxStringContentLength="5242880" maxArrayLength="5242880" maxBytesPerRead="5242880" maxNameTableCharCount="5242880"/> 
     </binding> 
    </webHttpBinding> 
... 
... 
... 
<endpoint 
     address="/" 
     binding="webHttpBinding" 
     bindingConfiguration="webBinding" 

我的問題是,我可以在服務器上改變這一點,但也有不WCF配置設置客戶端作爲REST服務,我只是使用WebClient對象發出http請求

有什麼想法?

回答

0

該錯誤不會發生在客戶端上,因爲讀者配額是一個WCF唯一的東西,而WebClient/HttpWebRequest本身並不執行反序列化或強制執行任何其他類型的配額。

所以我想說,這可能是你把配置放在錯誤的地方,它沒有得到拾起。

無論是...或者你沒有在客戶端手動使用WCF DataContract串行器之一,對嗎?

+0

肯定把設置在正確的綁定在端點地址fullly資質URL作爲已在端點故意拼寫錯誤,看到它失敗了。有點贊同你對客戶沒有必要,但許多文章說它必須在兩個。顯然在休息客戶端上沒有這樣的設置 – ChrisCa 2010-06-01 19:53:35

+0

然後擊敗我。什麼是您正在配置的端點的正確地址? – tomasr 2010-06-02 01:26:17