请求实体WCF过大问题



我有一个简单的WCF,它有两个方法,第一个是:GetDetails,这个方法,在字节数组中给我返回一些信息和一些图像(所有这些都在XML文档中),但我遇到了一个问题:

当我尝试调用这个方法时:

using (testWCF wcfClient = new testWCF()) { //new testWCF() has no parameter costructors, so i can't use bindings or different endpoint...Why?...anyway
                string ff = wcfClient.GetDetails ("Test");
            }

调试器抛出一个新的异常:(413)请求实体太大

这很奇怪,因为在web.config中,配置似乎很好:

<?xml version="1.0"?>
<configuration>
  <appSettings/>
  <system.web>
    <compilation targetFramework="4.0"/>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
      </providers>
    </roleManager>
    <pages controlRenderingCompatibilityVersion="4.0"/>
  </system.web>
  <!-- Quando si distribuisce il progetto della libreria di servizi, è necessario aggiungere il contenuto del file di configurazione al file 
  app.config dell'host. System.Configuration non supporta i file di configurazione delle librerie. -->
  <system.serviceModel>
    <services>
      <service name="WCF">
        <endpoint address="http://10.10.10.1/wcf/WCF.svc" binding="basicHttpBinding" contract=“wcfContract” bindingConfiguration="MyBindingConfig" behaviorConfiguration="SingleFileBehaviour"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="MyBindingConfig" textEncoding="utf-8" openTimeout="00:02:15" closeTimeout="00:02:15" sendTimeout="00:00:15" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="SingleFileBehaviour">
          <wsdlExtensions singleFile="true"/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <extensions>
      <behaviorExtensions>
        <add name="wsdlExtensions" type="WCFExtrasPlus.Wsdl.WsdlExtensionsConfig, WCFExtrasPlus, Version=2.4.0.6, Culture=neutral, PublicKeyToken=f8633fc5451b43fc"/>
      </behaviorExtensions>
    </extensions>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
</configuration>

求你了,帮帮我,我在这上面挣扎。

谢谢。

更改您的配置如下:

  1. 您必须增加UploadReadAheadSize。(默认大小48kb)
  2. 将最大接收消息大小增加到以下

    <basicHttpBinding>
      <binding maxReceivedMessageSize="10485760">
      </binding>
    </basicHttpBinding>
    

最新更新