wcf教程-传递数据过大怎么配置?读取 XML 数据时,超出最大字符串内容长度配额 (8192)
昨天測試客戶端程序與服務端wcf時,出現一個錯誤:
讀取 XML 數據時,超出最大字符串內容長度配額 (8192)。通過更改在創建 XML 讀取器時所使用的 XmlDictionaryReaderQuotas 對象的 MaxStringContentLength 屬性,可增加此配額。
在wcf中其實已經配置了傳遞數據的大小了:maxReceivedMessageSize?獲取或設置配置了此綁定的通道上可以接收的消息的最大大小。
basicHttpBinding等預定義的綁定一般具有MaxReceivedMessageSize屬性,CustomBinding則需要在Transport中定義。
<binding name="TcpBindingConfig" maxBufferPoolSize="655360000000" maxBufferSize="655360000" maxReceivedMessageSize="655360000000" transferMode="Streamed">還報上面的錯誤,是因為傳輸的數據是字符串的問題。
從網上找了一下,發現都是動態配置的。整理一下:
1、在web.config中配置:
在bingding中增加一項:
<bindings><netTcpBinding><binding name="TcpBindingConfig" maxBufferPoolSize="655360000000" maxBufferSize="655360000" maxReceivedMessageSize="655360000000" transferMode="Streamed"><readerQuotas maxDepth="32" maxStringContentLength="655360000"maxArrayLength="655360000"maxBytesPerRead="655360000" maxNameTableCharCount="655360000" /><security mode="None" /></binding></netTcpBinding><basicHttpBinding><binding name="BasicHttpBindingConfig" maxBufferPoolSize="655360000000" maxBufferSize="655360000" maxReceivedMessageSize="655360000000" sendTimeout="00:02:00" transferMode="Streamed"><readerQuotas maxDepth="32" maxStringContentLength="655360000"maxArrayLength="655360000"maxBytesPerRead="655360000" maxNameTableCharCount="655360000" /><security mode="None"/></binding></basicHttpBinding></bindings>ReaderQuotas:獲取或設置可由配置了此綁定的終結點處理的 SOAP 消息的復雜性約束。
該屬性是XmlDictionaryReaderQuotasElement類型,一般需要設置該屬性的MaxArrayLength、MaxStringContentLength及MaxDepth屬性。
MaxItemsInObjectGraph:獲取對象圖中要序列化或反序列化的最大項數。
該屬性屬于DataContractSerializer類,需要在serviceBehaviors下的behavior節中配置。
2、在 后臺 C#修改:ServiceClient service = new ServiceClient(); (service.Endpoint.Binding as NetTcpBinding).MaxReceivedMessageSize = int.MaxValue; (service.Endpoint.Binding as NetTcpBinding).MaxBufferPoolSize = int.MaxValue; (service.Endpoint.Binding as NetTcpBinding).MaxBufferSize = int.MaxValue; 發送大數據:在WCF服務端解決NetTcpBinding binding = new NetTcpBinding();binding.MaxReceivedMessageSize= 2147483647(更改這個數字) ; 接受大數據:在WCF客戶端解決NetTcpBinding binding = new NetTcpBinding();binding.ReaderQuotas = new XmlDictionaryReaderQuotas() { MaxStringContentLength = 2147483647(更改這個數字) };
總結
以上是生活随笔為你收集整理的wcf教程-传递数据过大怎么配置?读取 XML 数据时,超出最大字符串内容长度配额 (8192)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python圣诞树代码成品图片动态_基于
- 下一篇: 以index.wxml为例解析WXML