为 WCF webhttp 设置最大消息和缓冲区大小 [英] Setting Max Message and buffer size for WCF webhttp

查看:29
本文介绍了为 WCF webhttp 设置最大消息和缓冲区大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前有一个带有 webHttp 绑定的 WCF 服务,我试图通过覆盖配置中的默认设置来增加可以输入到该服务的最大大小,我尝试做类似

I currently have a WCF service with webHttp bindings, im attempting to increase the max size that can be inputted to the service by overriding the default settings in config, i have tried doing something like

  <system.serviceModel>
<bindings>
<webHttpBinding>
  <binding name="webHttp" >
  <security mode="Transport">
      <transport clientCredentialType = 
             "None"
            proxyCredentialType="None"
            realm="string" />
  </security>
  </binding>

</webHttpBinding>
</bindings>
<services>

  <service name="PrimeStreamInfoServices.Service1" behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
    <!-- Service Endpoints -->
    <endpoint address="" binding="webHttpBinding"  contract="PrimeStreamInfoServices.IService1">
      <!-- 
          Upon deployment, the following identity element should be removed or replaced to reflect the 
          identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
          automatically.
      -->
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="PrimeStreamInfoServices.Service1Behavior">
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<diagnostics>

并设置与消息大小有关的各种其他属性,但似乎都不起作用,甚至可以更改 webHttp 绑定的消息大小吗?有什么建议?谢谢!

and setting various other properties pertaining to message size but none seems to be working, can one even change the m essage size of a webHttp binding? Any suggestions? Thanks!

推荐答案

根据您的设置,有多种设置可能会产生影响 - 试试这个:

There's a multitude of settings that might have an influence depending on your settings - try this:

<bindings>
  <webHttpBinding>
    <binding name="LargeWeb"
             maxBufferPoolSize="1500000"
             maxReceivedMessageSize="1500000"
             maxBufferSize="1500000">
      <readerQuotas 
            maxArrayLength="656000"
            maxBytesPerRead="656000"
            maxDepth="32"
            maxNameTableCharCount="656000"
            maxStringContentLength="656000"
            />
    </binding>
  </webHttpBinding>
</bindings>

通过定义 webHttpBinding 的版本"并将所有这些参数设置为更高的值,您应该能够(几乎)通过任何消息大小.

By defining your "version" of the webHttpBinding and setting all those parameters to higher values, you should be able to get through any message size (almost).

请注意:这确实让您的系统有可能被大量消息淹没,从而陷入瘫痪(经典的拒绝服务攻击)——这就是这些限制设置得相当低的原因——由设计和目的.

Mind you: this does open up your system to the potential of being flooded with huge messages and thus be brought down to its knees (classic denial-of-service attacks) - that's the reason these limits are set fairly low - by design and on purpose.

您可以将它们更改为更高的值 - 只需注意您在做什么以及安全风险是什么(如果这样做)!

You can change them to higher values - just be aware what you're doing and what the security risks are, if you do!

马克

PS:为了使用这些设置,您当然必须在服务器和客户端配置中引用该绑定配置:

PS: In order to make use of these settings, you of course have to reference that binding configuration in your server and client side configs:

<client>
  <endpoint address="http://localhost"
            binding="webHttpBinding" bindingConfiguration="LargeWeb"
            contract="IMyService" />
</client>
<services>
  <service>
    <endpoint address="http://localhost"
              binding="webHttpBinding" bindingConfiguration="LargeWeb"
              contract="IMyService" />
  </service>
</services>

这篇关于为 WCF webhttp 设置最大消息和缓冲区大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆