WCF - Win App"读取XML数据时已超出最大字符串内容长度配额(8192)."

Ash*_*jan 8 .net wcf

我在通过WCF实现Web服务时遇到了一些问题.当我在客户端应用程序中将WCF方法中的值作为字符串(xml)传递时,会出现错误

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://tempuri.org/:XmlEntity时出错 .

InnerException消息是

'反序列化System.String类型的对象时出错.读取XML数据时已超出最大字符串内容长度配额(8192).通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象的MaxStringContentLength属性,可以增加此配额.第249行,第19位.'.

我试图在客户端web.configuration文件中更改maxStringContentLength的值,但错误仍然相同.请尽快找出解决方案.

ami*_*mit 12

Ashish,Darin意味着您应该创建一个basicHttpBinding来覆盖并将maxStringContentLength的值增加到2147483647.您能否确认是否已将端点配置为使用与bindingConfiguration属性相同的binidng.例如,您已经创建了这样的绑定,

<basicHttpBinding>
   <binding name="HandleLargeMessage" maxReceivedMessageSize="2147483647">         
      <readerQuotas maxDepth="2147483647"
         maxStringContentLength="2147483647"
         maxArrayLength="2147483647"
         maxBytesPerRead="2147483647"
         maxNameTableCharCount="2147483647" /> 
   </binding>
Run Code Online (Sandbox Code Playgroud)

您可以将端点配置为使用上面的绑定配置,(请注意bindingConfiguration属性)

<endpoint  
     address="....."
     binding="basicHttpBinding" bindingConfiguration="HandleLargeMessage" 
     contract="xxx" />
Run Code Online (Sandbox Code Playgroud)

你能否证实你是否已经这样做了?很可能在这里似乎并非如此.

如果您已经按照此操作并想确认它是否已被使用,请在详细级别捕获服务和客户端应用程序的WCF跟踪,并在客户端应用程序的服务和构造通道中检查构造主机中的活动.


Dar*_*rov 7

尝试在服务器和客户端上增加此值:

<binding 
    name="myBinding"
    maxReceivedMessageSize="2147483647">
        <readerQuotas 
            maxDepth="2147483647"
            maxStringContentLength="2147483647"
            maxArrayLength="2147483647"
            maxBytesPerRead="2147483647"
            maxNameTableCharCount="2147483647" />
</binding>
Run Code Online (Sandbox Code Playgroud)