WCF中有大量请求的问题

时间:2011-09-19 11:55:45

标签: wcf binding basichttpbinding

我已经看到这个问题发布了一百万次,但没有一个解决方案对我有用......所以我走了:

调用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>

3 个答案:

答案 0 :(得分:19)

找到解决方案......但还是很奇怪!

如果我从绑定标记中删除name属性,并从我的端点标记中删除bindingConfiguration属性,则它都可以正常工作。这意味着basicHttpBinding配置是所有basicHttpBinding端点的默认配置

答案 1 :(得分:2)

尝试使用命名绑定配置使用WCF上传文件时遇到了同样的问题。这与WCF 4.0和“简化”配置(见MSDN

中的更改有关

仅供参考:我尝试过一切来解决这个问题;服务的参数是一个字节数组,所以我们删除了它并使用了一个流,尝试改变缓冲与流模式,显然有150万个配置选项来改变从未通过命名配置获取的大小。

确实很奇怪,但是按照你的建议工作。

答案 2 :(得分:0)

我遇到类似的问题,端点没有使用命名绑定。我的问题是服务名称中的拼写错误。就像Livewire所说,WCF 4 Simplified Configuration自动创建一个端点,我定义的端点没有覆盖它。