如何增加邮件大小配额

我有一个WCF服务,它从数据库返回1000条记录到客户端。 我有一个ASP.NET WCF客户端(我在asp.net Web应用程序项目中添加了服务引用来使用WCF)。

当我运行客户端应用程序时,我收到以下消息:

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

任何帮助? 如何增加邮件大小配额?


在App.config或Web.config文件中,您需要这样的内容来增加消息大小配额:

<bindings>
    <basicHttpBinding>
        <binding name="basicHttp" allowCookies="true"
                 maxReceivedMessageSize="20000000" 
                 maxBufferSize="20000000"
                 maxBufferPoolSize="20000000">
            <readerQuotas maxDepth="32" 
                 maxArrayLength="200000000"
                 maxStringContentLength="200000000"/>
        </binding>
    </basicHttpBinding>
</bindings>

并在您的端点配置中使用绑定名称,例如

...
bindingConfiguration="basicHttp"
...

值的理由很简单,它们足够大以容纳大多数消息。 您可以调整该号码以符合您的需求。 低默认值基本上是为了防止DOS类型的攻击。 使其达到20000000将允许分布式DOS攻击生效,默认的64k大小需要大量的客户端来压倒大多数服务器。


如果在使用WCF测试客户端时仍然收到此错误消息,这是因为客户端具有单独的MaxBufferSize设置。

纠正这个问题:

  • 右键单击树底部的配置文件节点
  • 选择使用SvcConfigEditor编辑
  • 将出现可编辑设置列表,包括MaxBufferSize。

    注意:默认情况下,自动生成的代理客户端还将MaxBufferSize设置为65536。


    如果您要动态创建WCF绑定,请使用以下代码:

    BasicHttpBinding httpBinding = new BasicHttpBinding();
    httpBinding.MaxReceivedMessageSize = Int32.MaxValue;
    httpBinding.MaxBufferSize = Int32.MaxValue;
    // Commented next statement since it is not required
    // httpBinding.MaxBufferPoolSize = Int32.MaxValue;
    
    链接地址: http://www.djcxy.com/p/46643.html

    上一篇: How to Increase Message Size Quota

    下一篇: .net DateTime Serialization Deserialization bug