2013-01-03 9 views
18

संभव डुप्लिकेट से एक WCF बुला कैसे MaxReceivedMessageSize को बढ़ाने के लिए:
The maximum message size quota for incoming messages (65536) has been exceededजब सी #

मैं फ़ाइल अपलोड और डाउनलोड करने के लिए WCF का उपयोग कर रहा हूँ। अपलोडिंग सफल है, लेकिन जब मैं एक बड़ी फ़ाइल डाउनलोड मैं इस त्रुटि

त्रुटि पाई गई: भेजे गए संदेशों के लिए अधिकतम संदेश आकार कोटा (65536) हो गया है। कोटा बढ़ाने के लिए, उचित बाध्यकारी तत्व पर MaxReceivedMessageSize प्रॉपर्टी का उपयोग करें।

मेरी सेवा.कॉन्फिग फ़ाइल में निम्न कोड है।

<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> 

किसी भी एक मेरी मदद कर सकते हैं कि कैसे MaxReceivedMessageSize

उत्तर

30

बड़े डिफ़ॉल्ट का उपयोग करने के लिए web.config में कस्टम बाइंडिंग बदलें। मैंने 2 एमबी उठाया क्योंकि यह एक उचित आकार है। बेशक इसे 2 जीबी तक सेट करना (जैसा कि आपका कोड सुझाता है) काम करेगा लेकिन यह आपको हमलों के लिए अधिक संवेदनशील बना देता है। अपने बड़े अनुरोध से बड़ा आकार चुनें लेकिन अधिकतर बड़ा नहीं है। 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> 
:

इस चेक

संबंधित मुद्दे