我收到以下错误:
格式化程序在尝试反序列化消息时抛出异常:反序列化操作“InsertQuery”的请求消息体时出错。读取XML数据时已超出最大字符串内容长度配额(8192)。通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象的MaxStringContentLength属性,可以增加此配额。第1行,第33788位。
为了增加MaxStringContentLength的大小,我修改了我的Web.config,如下所示。
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="webHttpBindingDev">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</webHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
即便如此,我也遇到同样的错误:(
请告诉我为解决此问题需要做出哪些更改。 在此先感谢!!
答案 0 :(得分:4)
您是Web.config文件表明您使用的是.NET 4.0,并且Web.config中没有明确定义的端点,因此WCF会为您提供一个默认端点(基于*的位置)。 svc文件),并使用basicHttpBinding
方案的默认绑定http
。 maxStringContentLength
的默认值为8192。
要更改它,您需要:
要通过显式端点执行此操作,请将以下内容添加到<system.serviceModel>
下的Web.config文件中:
<services>
<service name="your service name">
<endpoint address="" binding="webHttpBinding"
bindingConfiguration="webHttpBindingDev"
contract="your fully-qualified contract name" />
</service>
</services>
您必须为您的服务名称和合同提供正确的值。
要通过设置默认值来执行此操作,您需要删除webHttpBinding
属性,将name
的指定绑定配置标记为默认值:
<bindings>
<webHttpBinding>
<binding>
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</webHttpBinding>
</bindings>
接下来,您需要将webHttpBinding
设置为http
方案的默认绑定:
<protocolMapping>
<add binding="webHttpBinding" scheme="http" />
</protocolMapping>
通过这两项更改,您无需添加显式端点。
此外,由于您使用的是webHttpBinding
,我相信您需要将以下内容添加到端点行为中:
<behaviors>
<endpointBehaviors>
<behavior>
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
有关WCF 4中默认端点,绑定等的更多信息,请查看A Developer's Introduction to Windows Communication Foundation 4。