好吧,我已經建立並測試了一個很好的小WCF服務。客戶端創建一個字符串並將其傳遞給服務上的一個方法,然後該服務將其另存爲一個文件。用少量的測試數據的完美作品,但是當我有什麼應該做的嘗試 - 通過一些序列化.NET對象 - 它屬於過去,與錯誤在哪裏增加maxStringContentLength爲了讓WCF傳遞大字符串?
格式化扔同時 嘗試反序列化異常消息: 錯誤反序列化請求主體 消息操作最大字符串 內容長度配額(8192)在讀取XML數據時已被超出。這種配額可能會增加通過更改XmlDictionaryReaderQuotas的MaxStringContentLength屬性創建XML閱讀器
所以我瞪着這一點,並發現MaxStringContentLength屬性應在「readerQuotas」標籤的標籤內設定當對象使用配置文件,如下:
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
所以我改變它。我在客戶端的App.config文件上更改它。我在App.config文件和我的服務器的Web.config文件上更改它。我在單元測試項目的App.config文件中更改它。而且它們都不起作用 - 我一直得到同樣的錯誤。
有趣的是,令人沮喪的是,當我啓動WcfClient.exe來看看我的服務,連接到它並查看配置文件(Client.dll.config)時,我被gobsmacked發現這個auto - 生成文件沒有包含我的變化,並已重置爲:
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
我不知道從哪裏它是從獲得這些值 - 無處在我的整個解決方案中的這些被設置。所以它必須使用默認值,但我不明白爲什麼當我在服務器和客戶端都提供自定義配置文件時,它使用默認值。
任何人都可以幫我解決這個問題嗎?
你可以發佈綁定的配置,你把`readerQuotas`元素放在哪裏? – vlad 2011-02-18 16:36:45