WCF REST - 超出 maxMessageSize

Posted

技术标签:

【中文标题】WCF REST - 超出 maxMessageSize【英文标题】:WCF REST - maxMessageSize exceeded 【发布时间】:2015-02-08 15:48:17 【问题描述】:

以下是部分配置文件:

<services>
  <service name="MMC.API2.MMCApi" behaviorConfiguration="restBehaviorConfig">
    <endpoint address="" binding="webHttpBinding" contract="MMC.API2.IMMCApi" behaviorConfiguration="web" bindingConfiguration="LargeData">
    </endpoint>
    <host>
      <timeouts openTimeout="01:20:00" closeTimeout="01:20:00" />
    </host>
  </service>
</services>

...

     <webHttpBinding>
        <binding name="LargeData" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="32" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
        </binding>
      </webHttpBinding>

问题:

已超出传入邮件的最大邮件大小配额 (65536)。要增加配额,请在适当的绑定元素上使用 MaxReceivedMessageSize 属性。

【问题讨论】:

尝试在 web.config 中增加 httpRunTime maxRequestLength 【参考方案1】:

我觉得很好。尝试如下更改行为配置;

  <serviceBehaviors>
    <behavior name="web">
      <dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="2147483647" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceTimeouts transactionTimeout="00:10:00" />
      <serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="100"
        maxConcurrentInstances="100" />
    </behavior>
  </serviceBehaviors>

【讨论】:

可能是系统网络标签的原因? 在 system.web 标签中【参考方案2】:

服务绑定配置的片段似乎设置正确,因此您可能需要查看客户端的绑定配置,以确保它们具有相似的 readerQuotas 和 maxBuffer* 设置。

注意事项: 您可能需要提供有关整体环境/配置的更多信息。 如果您尚未启用 WCF 跟踪日志记录,可能会帮助您识别问题。

【讨论】:

WCF REST 服务由 ASP.NET MVC 应用程序激活。 ASP.NET MVC 应用程序应该使用类似于“LargeData”绑定定义的绑定配置。 我发布的是 ASP.NET MVC web.config 文件的一部分。

以上是关于WCF REST - 超出 maxMessageSize的主要内容,如果未能解决你的问题,请参考以下文章

何时使用 WCF/REST

WCF,已超出传入邮件的最大邮件大小配额 (65536)

WCF MaxReceivedMessageSize:超出最大邮件大小配额

WCF REST 方法和非 REST 方法

WCF 服务已超出最大数组长度配额 (16384)

如何从基于 REST 的 WCF 服务中读取授权标头?