2011-10-26 42 views
0

我有一個WCF Web服務,它當前正在接受字符串的JSON對象,其中一個鍵/值對包含圖像二進制數據的Base 64編碼字符串。WCF服務錯誤反序列化對象

當Web服務接收它引發以下錯誤請求:

The exception message is 'There was an error deserializing the object of type. The maximum string content length quota (8192) has been exceeded while reading XML data.

我已經按照一些解決方案的其他人建議和我的web.config現在有一個自定義綁定:

<bindings> 
    <webHttpBinding> 
    <binding name="LongWebHttpBinding" 
      maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"> 
     <readerQuotas maxDepth="32" 
      maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" 
      maxBytesPerRead="2147483647" 
      maxNameTableCharCount="2147483647" /> 
    </binding> 
    </webHttpBinding> 
</bindings> 

與被配置爲端點如下:

<services> 
    <service name="GenericService"> 
    <endpoint address="" 
       behaviorConfiguration="jsonBehavior" 
       binding="webHttpBinding" bindingConfiguration="LongWebHttpBinding" 
       contract="IGenericService" />    
    </service>  
</services> 

根據噸o所有其他建議設置bindingConfiguration應解決我收到的錯誤消息。

是否有任何進一步的措施可以嘗試解決這個問題?

+0

在您做出上述更改後它仍然無法工作嗎? – Tim

+3

確保'service'元素中的'name'屬性包含帶有名稱空間的類型名稱(如果從非本地程序集引用,則爲全名類型)。否則,您的配置不被使用。 –

+0

@LadislavMrnka - 我從來不知道(雖然我總是使用完整的命名空間)。 – Tim

回答

0

如果您在新設置後仍然有問題,您可能需要調整您定義的jsonBehavior的<dataContractSerializer>部分中的maxItemsInObjectGraph屬性。

dataContractSerializer

不過,我相信,如果這是問題的異常會告訴你 - 不知道,因爲我從來沒有調整比maxReceivedMessageSize或maxStringContentLength的任何其他。

0

由於Ladislav Mrnka問題原來是因爲在Web.Config中輸入時沒有使用服務的完整名稱空間。

一旦我添加完整的命名空間,它似乎工作正常。

感謝您的幫助