【发布时间】:2011-11-20 04:41:51
【问题描述】:
我已经看到这个问题发布了一百万次,但没有一个解决方案对我有用......所以我开始了:
调用 WCF 服务时出现以下错误:
格式化程序在尝试反序列化 消息:尝试反序列化参数时出错 http://BlanketImportService.ServiceContracts/2011/06:request。这 InnerException 消息是“反序列化 BlanketImport.BlanketImportRequest 类型的对象。最大数组 读取 XML 数据时已超出长度配额 (16384)。这 可以通过更改 MaxArrayLength 属性来增加配额 创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象。 第 1 行,位置 44440.'。有关详细信息,请参阅 InnerException。
我已经修改了客户端服务器上的readerQuotas,并应用了 bindingConfiguration 标签。
这是服务器配置:
<bindings>
<basicHttpBinding>
<binding name="BilagImportBinding" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="BlanketImport">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" bindingNamespace="http://BlanketImportService.ServiceContracts/2011/06" contract="BlanketImport.IBlanketImport">
</endpoint>
</service>
</services>
以及客户端配置:
<bindings>
<basicHttpBinding>
<binding name="BilagImportBinding" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost/BlanketImport/BlanketService.svc"
binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" contract="BlanketServiceReference.IBlanketService"
name="BasicHttpBinding_IBlanketService" />
</client>
【问题讨论】:
-
服务名称只是“BlanketImport”,还是在命名空间下(如BlanketImport.BlanketImport)?
<service>元素的“name”属性的值必须是服务的fully-qualified-name(命名空间+类型名称),否则WCF 将找不到它。 -
现在是 2015 年,wcf 配置设置对我们大多数人来说仍然是个谜。
标签: wcf binding basichttpbinding