【问题标题】:Error: maximum message size quota for incoming messages (65536) has been exceeded from external DLL错误:已超出来自外部 DLL 的传入消息 (65536) 的最大消息大小配额
【发布时间】:2014-11-07 04:21:38
【问题描述】:

我在我的 asp.net C# 应用程序 (4.0) 中使用了一个外部 dll。在那个 dll 中,它调用了一个 wcf 服务。

我正在调用名为“Downloadfile()”的 DLL 中的一个方法,以将文件下载为字节数组。 对于大文件,我遇到了异常

“已超出传入邮件的最大邮件大小配额 (65536)”。

我的 web.config 中没有端点配置,因为我只引用了那个 DLL。

那么如何解决这个场景呢?

请帮忙。

【问题讨论】:

  • 您知道异常是来自 WCF 服务还是来自外部 DLL?您是否有外部 DLL 的源代码,以便向我们展示哪条线路出现故障?如果我们不知道该外部 DLL 在做什么,我们无法很好地帮助您解决问题。
  • 对于小文件,该方法工作正常。我认为这个错误是由于客户端应用程序不允许下载限制。堆栈跟踪中没有行规范
  • 您有关于 DLL 的任何信息以及它期望的值吗?如果它从配置文件中获取输入,您可以将这些值放入客户端配置中,它会获取它们。

标签: c# asp.net web-services wcf dll


【解决方案1】:

第三方应用程序很可能正在使用基本的 Http 绑定。您可以通过将以下内容添加到您的 web.config 来覆盖他们的设置。

<bindings>
  <basicHttpBinding>
    <binding name="MessageSizeBasic" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
        maxArrayLength="16348" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
    </binding>
  </basicHttpBinding>
  <webHttpBinding>
    <binding name="MessageSizeWeb" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
  </webHttpBinding>
</bindings>

第三方 DLL 中是否有任何分页例程。因为此解决方案仅适用于文件大小小于 2 GB 的情况。

【讨论】:

  • 这将不起作用,除非它被分配给 DLL 识别的端点。
  • 如果这是一个 dot net DLL,我会使用 dot dot peek 或 ilspy 来反编译 DLL 并发布 DLL 正在使用的代码。唯一的解决办法可能是要求第 3 方为您解决问题。
猜你喜欢
  • 2013-11-03
  • 2014-02-01
  • 2014-10-23
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多