【问题标题】:WCF Byte Array - The maximum array length quota errorWCF 字节数组 - 最大数组长度配额错误
【发布时间】:2013-09-02 17:42:26
【问题描述】:

使用 WCF 服务返回字节数组时出现以下错误

"读取 XML 数据时已超出最大数组长度配额 (16384)。 可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。第 1 行,位置 23626。”

我什至试图增加

  <wsHttpBinding>
    <binding name="EnrollmentSoapBinding" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647">
      <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" maxBytesPerRead="2147483647" />
    </binding>
  </wsHttpBinding>

还有,

<dataContractSerializer maxItemsInObjectGraph="2147483647"/>

仍然没有运气。还有其他想法吗?

【问题讨论】:

  • 为了进一步帮助您,您可以同时发布服务器端和客户端配置吗?

标签: wcf


【解决方案1】:

您的客户端和服务都必须在其配置中设置maxArrayLength 属性。

您显然没有在其中之一中设置它。 maxArrayLength 的默认值为 16384。

【讨论】:

  • 有可能——还有其他可能性。除非 OP 发布两个配置的服务模型部分,否则很难说。
  • @Tim 假设 Derek 有观点。听到其他可能性很有趣吗?你能分享一些经验吗?
  • @voo - 查看我的答案以了解其他几种可能性。
  • 对不起各位!使用我服务的人告诉我他们修改了客户端配置。但是不,更改后一切正常。谢谢
【解决方案2】:

除了 Derek 的回答之外,还有其他几种可能性,maxArrayLength 的新值没有被拾取。

一个是绑定配置没有分配给端点。例如,如果端点如下所示:

<endpoint address="" binding="wsHttpBinding" contract="MyService.IMyService1" />

然后将使用wsHttpBinding 的默认值,而不管配置文件中的其他地方可能指定什么。要分配定义的绑定配置,请使用bindingConfiguration 属性:

<endpoint address="" binding="wsHttpBinding" 
          bindingCongifuration="EnrollmentSoapBinding"
          contract="MyService.IMyService1" />

另一种可能性是如果没有定义端点(至少在服务中)。在这种情况下,框架(在 .NET 4.0 及更高版本中)将提供默认端点。默认情况下,该默认端点将使用 basicHttpBinding 并具有默认值。

在这种情况下可以做一些事情。可以显式声明端点并为其分配绑定(如我的答案的第一部分所示)。

可以通过省略name 属性来声明绑定并将其设置为默认值,如下所示:

<wsHttpBinding>
  <binding maxReceivedMessageSize="2147483647" 
           maxBufferPoolSize="2147483647">
    <readerQuotas maxArrayLength="2147483647" 
                  maxStringContentLength="2147483647" 
                  maxBytesPerRead="2147483647" />
  </binding>
</wsHttpBinding>

在这种情况下,如果没有定义端点,您还需要更改 http 的协议映射:

<protocolMapping>
  <add binding="wsHttpBinding" scheme="http"/> 
</protocolMapping>

这会将wsHttpBinding 设置为http 的默认绑定,并使用上面定义的“自定义”默认绑定设置。

没有看到服务和客户端配置,很难说真正的问题是什么。

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多