【问题标题】:maxReceivedMessageSize and maxBufferSize in app.configapp.config 中的 maxReceivedMessageSize 和 maxBufferSize
【发布时间】:2013-02-06 15:08:01
【问题描述】:

在运行应用程序之前,如何将 app.config 文件中的 maxReceivedMessageSize 和 maxBufferSize 参数增加到 2000000。

【问题讨论】:

    标签: c# .net winforms wcf service-model


    【解决方案1】:

    您需要在绑定上执行此操作,但您需要在客户端服务器上执行此操作。比如:

    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding maxBufferSize="64000000" maxReceivedMessageSize="64000000" />
            </basicHttpBinding>
        </bindings>
    </system.serviceModel>
    

    【讨论】:

    • 谢谢@mattytommo,这就是我想要的。
    • 谢谢!它也适用于我。即使我只为客户提供此更改,它也有效。
    • 完美,你为我节省了很多时间 :) ++1
    • 我不明白为什么这个答案有这么多赞成票。这是错误的,您不需要在客户端和服务器上都设置这些值。请参阅下面的答案。
    • 你的小粗话是救命的。谢谢!
    【解决方案2】:

    您可以在 app.config 中执行此操作。像这样:

    maxReceivedMessageSize="2147483647" 
    

    (最大值为Int32.MaxValue

    或在代码中:

    WSHttpBinding binding = new WSHttpBinding();
    binding.Name = "MyBinding";
    binding.MaxReceivedMessageSize = Int32.MaxValue;
    

    注意:

    如果您的服务对世界开放,请在增加此值时考虑安全性。

    【讨论】:

    • 我没有 app.config 文件,我可以在哪里创建?
    【解决方案3】:

    当前接受的答案不正确。 不需要在客户端和服务器绑定上设置maxBufferSizemaxReceivedMessageSize。视情况而定!

    如果你的请求太大(即服务操作的方法参数是内存密集型)在服务端设置属性,如果响应太大(即服务操作的方法返回值是内存)密集)在客户端设置值。

    有关maxBufferSizemaxReceivedMessageSize 之间的区别,请参阅MaxBufferSize property?

    【讨论】:

    • 我不知道为什么我们必须费心设置限制。如果我不知道有效载荷会有多大(想想 0..n 的基数)怎么办?
    • 您应该始终对“太大”进行保护。否则你很容易受到 DoS 攻击。
    • 除了安全性(对于面向公众的服务来说,这确实不应该被忽视),你不会在编译时知道你可能从服务调用中发送或检索的数据量(想想对象图费)。你只能估计。我认为Large Data and Streaming 很有趣,尤其是“大数据的特殊安全注意事项”一章。
    【解决方案4】:

    如果您使用自定义绑定,您可以像这样设置值:

    <customBinding>
        <binding name="x">
            <httpsTransport maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
        </binding>
    </customBinding>
    

    【讨论】:

      【解决方案5】:

      简单的解决方案:检查它是否适合您..

      转到 web.config

      查找客户端使用的绑定。

      改成,

      maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"

      完成。

      【讨论】:

        【解决方案6】:

        在客户端打开 app.config 并添加 maxBufferSize 和 maxReceivedMessageSize 属性(如果不可用)

        原创

          <system.serviceModel>
            <bindings>
              <basicHttpBinding>
                <binding name="Service1Soap"/>
              </basicHttpBinding>
            </bindings>
        

        编辑/更新后

          <system.serviceModel>
            <bindings>
              <basicHttpBinding>
                <binding name="Service1Soap" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
              </basicHttpBinding>
            </bindings>
        

        【讨论】:

          【解决方案7】:
          binding name="BindingName" 
          maxReceivedMessageSize="2097152" 
          maxBufferSize="2097152" 
          maxBufferPoolSize="2097152" 
          

          在客户端和服务器端

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-29
            • 2023-04-10
            • 2012-04-02
            • 2023-03-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多