我在通过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跟踪,并在客户端应用程序的服务和构造通道中检查构造主机中的活动.
尝试在服务器和客户端上增加此值:
<binding
name="myBinding"
maxReceivedMessageSize="2147483647">
<readerQuotas
maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10578 次 |
| 最近记录: |