2013-01-03 8 views
18

Mögliche Duplizieren Aufruf:
The maximum message size quota for incoming messages (65536) has been exceededwie MaxReceivedMessageSize zu erhöhen, wenn eine WCF von C#

Ich bin mit WCF für Datei Up- und Download. Upload ist erfolgreich, aber wenn ich eine große Datei herunterzuladen fand ich diesen Fehler

Fehler: Die maximale Nachrichtengröße Quote für eingehende Nachrichten (65536) überschritten wurde. Verwenden Sie die MaxReceivedMessageSize-Eigenschaft für das entsprechende Bindungselement, um das Kontingent zu erhöhen.

Meine Datei Service.config hat den folgenden Code.

<system.web> 
    <compilation debug="true" /> 
    <httpRuntime executionTimeout="4800" maxRequestLength="2147483647" /> 


    </system.web> 
    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="524288"> 
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     </binding> 
     </basicHttpBinding> 
     <!--<webHttpBinding> 
     <binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" /> 
     </webHttpBinding>--> 
    </bindings> 
    <services> 
     <service name="WITSService.WITSService"> 
     <clear /> 
     <endpoint binding="basicHttpBinding" contract="WITSService.WITSService" /> 
     </service> 
    </services> 

    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="myEndPointBehavior"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 

kann mir helfen, wie MaxReceivedMessageSize

Antwort

30

Ändern Sie customBinding in der Datei web.config, um größere Standardwerte zu verwenden. Ich wählte 2MB, da es eine vernünftige Größe ist. Natürlich wird es auf 2 GB (wie der Code es vorschlägt) funktionieren, aber es macht Sie anfälliger für Angriffe. Wählen Sie eine Größe, die größer ist als Ihre größte Anforderung, aber nicht zu groß ist.

prüfen dies: Using Large Message Requests in Silverlight with WCF

<system.serviceModel> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior name="TestLargeWCF.Web.MyServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
    <bindings> 
    <customBinding> 
     <binding name="customBinding0"> 
     <binaryMessageEncoding /> 
     <!-- Start change --> 
     <httpTransport maxReceivedMessageSize="2097152" 
         maxBufferSize="2097152" 
         maxBufferPoolSize="2097152"/> 
     <!-- Stop change --> 
     </binding> 
    </customBinding> 
    </bindings> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    <services> 
    <service behaviorConfiguration="Web.MyServiceBehavior" name="TestLargeWCF.Web.MyService"> 
     <endpoint address="" 
       binding="customBinding" 
       bindingConfiguration="customBinding0" 
       contract="TestLargeWCF.Web.MyService"/> 
     <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange"/> 
    </service> 
    </services> 
</system.serviceModel> 
Verwandte Themen