将MaxReceivedMessageSize属性放在WCF服务的web.config文件中的位置?

时间:2012-04-01 18:31:11

标签: c# wcf

我需要更改我的web.config文件并添加MaxReceivedMessageSize属性 我的web.config - 但在哪里?

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

   <?xml version="1.0"?>
   <configuration>
      <system.web>
        <compilation debug="false"><assemblies><add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /></assemblies></compilation>
      </system.web>
      <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
     <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
      </system.webServer>

3 个答案:

答案 0 :(得分:33)

您需要为要使用的绑定定义绑定配置,然后需要定义服务(在服务器端)和客户端(在客户端)以使用该绑定和绑定配置:

<system.serviceModel>
   <bindings>
      <!-- pick whichever binding you want .... -->
      <basicHttpBinding>
         <!-- binding configuration with a name -->
         <binding name="ExtendedMaxSize"  
             maxBufferSize="999999" maxReceivedMessageSize="999999" />
      </basicHttpBinding>
  </bindings>
  <services>
    <service name="Yournamespace.YourServiceClass" behaviorConfiguration="...">
      <!-- define endpoint with your binding and the name of the binding configuration
           that you have defined just above -->
      <endpoint address=""
                binding="basicHttpBinding"
                bindingConfiguration="ExtendedMaxSize"  
                contract="Yournamespace.IYourServiceContract" />
    </service>
  </services>

答案 1 :(得分:2)

帮助那些可能像我一样在这里结束的人。 我无法添加上面的评论(通常有人在我遇到问题之前已经有了答案),所以我必须添加一个答案。

我有一个MVC 4应用程序,我怀疑上面的初始示例来自实际WCF服务项目的web.config。其中一条评论提到他们怀疑它是MVC 4应用程序和默认配置设置。

但是你如何解决这个问题呢?从更多的研究来看,实际上需要对CLIENT的web.config进行更改,换句话说,对于具有WCF服务的REFERENCE的项目的Web配置。您会发现在那里进行更改要容易得多。那个版本的web.config实际上就像你要找的那样。

这对我很轻松,并解决了我的问题。

答案 2 :(得分:1)

  1. 与通常所说的相反,无需在服务器上进行设置。
  2. 与MSDN所说的相反,仅对传输绑定元素设置限制是不够的。也需要设置绑定本身。 例如:

var targetBinding = new BasicHttpsBinding();

targetBinding.MaxReceivedMessageSize = MaxWcfMessageSize;
targetBinding.MaxBufferPoolSize = MaxWcfMessageSize;
targetBinding.MaxBufferSize = MaxWcfMessageSize;

var targetBindingElements = targetBinding.CreateBindingElements();
var httpsBindElement = targetBindingElements.Find<HttpsTransportBindingElement>();

httpsBindElement.MaxReceivedMessageSize = MaxWcfMessageSize;
httpsBindElement.MaxBufferPoolSize = MaxWcfMessageSize;
httpsBindElement.MaxBufferSize = MaxWcfMessageSize;

TextMessageEncodingBindingElement tmbebe = targetBindingElements.Find<TextMessageEncodingBindingElement>();
tmbebe.ReaderQuotas.MaxArrayLength = MaxWcfMessageSize;