2009-08-27 11 views
15

से पढ़ा नहीं किया जा रहा मैं एक WCF सेवा के लिए एक निम्न सर्वर साइड app.config है:WCF maxReceivedMessageSize config

<system.serviceModel> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="default" maxReceivedMessageSize="5000000"> 
      <readerQuotas maxStringContentLength="5000000" maxArrayLength="5000000" /> 
     </binding> 
     </wsHttpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="Core.TOAService.Service1Behavior" 
     name="Core.TOAService.TOAService"> 
     <endpoint address="" binding="wsHttpBinding" contract="Core.TOAService.ITOAService"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8732/Design_Time_Addresses/Core.TOAService/TOAService/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="Core.TOAService.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="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

जब मैं कोशिश करते हैं और (केवल ~ 250kb), मैं इस सेवा एक बड़ा सा फ़ाइल पारित एक अपवाद svclog फ़ाइल में लॉग इन:

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

आप config के शीर्ष पर बाध्यकारी अनुभाग से देख सकते हैं, मैं 5000000 को maxReceivedMessageSize स्थापित करने के लिए कोशिश की है, लेकिन सेवा अभी भी सोचता है कि यह क्या गलत है के रूप में डिफ़ॉल्ट पर सेट है 65536 कोई भी विचार या "उपयुक्त" बाध्यकारी तत्व कौन सा है?

उत्तर

27

और सेटिंग्स हैं :-) <binding> टैग पर "maxBufferPoolSize" और "maxBufferSize" आज़माएं।

लेकिन सबसे बड़ी समस्या यह है: आपका एंडपॉइंट संदर्भ नहीं है कि बाध्यकारी कॉन्फ़िगरेशन!

<endpoint address="" 
      binding="wsHttpBinding" contract="Core.TOAService.ITOAService"> 

आप इतना है कि यह उपयोगी हो जाता है इसे करने के लिए एक संदर्भ जोड़ने की जरूरत है - बस इसे "डिफ़ॉल्ट" काम नहीं करता बुला .....

<endpoint address="" 
      binding="wsHttpBinding" 
      bindingConfiguration="default" 
      contract="Core.TOAService.ITOAService"> 

आप अपने समय की आगे हैं ;-) डब्ल्यूसीएफ 4 (.NET 4.0 के साथ - इस साल 200 9 के कुछ समय बाद) में, आप स्पष्ट रूप से नाम और संदर्भ के बिना "डिफ़ॉल्ट बाध्यकारी विन्यास" को परिभाषित करने में सक्षम होंगे - लेकिन अभी के लिए, आपको एक लिंक बनाना होगा आपके एंडपॉइंट और उसके बाध्यकारी और आपके बाध्यकारी (या व्यवहार) कॉन्फ़िगरेशन के बीच आपके पास है!

मार्क

+0

हां, आपको बाध्यकारी कॉन्फ़िगरेशन का संदर्भ देना होगा। बफर परिवर्तन शायद आवश्यक नहीं हैं। –

+0

यह कभी स्पष्ट नहीं है कि तीन बफर परिवर्तनों में से कौन सा वास्तव में जरूरी है - यह कोशिश करने और देखने में मदद करता है। वास्तव में उन सेटिंग्स को ट्विक करने के तरीके के बारे में कोई अच्छा, व्यापक दस्तावेज़ीकरण और स्पष्टीकरण नहीं है, दुर्भाग्यवश .... –

+0

दोह, मुझे 3.5 सेवा बनाने के लिए VS2010 का उपयोग करने के लिए सही सर्वर! बहुत धन्यवाद, यह तय है। –

1

कई स्थानों है कि आप आकार निर्धारित करने की आवश्यकता नहीं हैं। आपके मामले में मुझे लगता है कि आपको पढ़ने कोटा जोड़ने की जरूरत है।

<basicHttpBinding> 
    <binding name="httpBasicBinding_Service" closeTimeout="00:03:00" 
     openTimeout="00:03:00" receiveTimeout="00:10:00" sendTimeout="00:03:00" 
     maxBufferSize="2000001" 
     maxBufferPoolSize="2000001" maxReceivedMessageSize="2000001"> 
     <readerQuotas maxDepth="2000001" maxStringContentLength="2000001" 
     maxArrayLength="2000001" maxBytesPerRead="2000001" maxNameTableCharCount="2000001" /> 
    </binding> 
    </basicHttpBinding> 
15

आप अभी भी WCF टेस्ट क्लाइंट का उपयोग करते समय यह त्रुटि संदेश मिल रहे हैं, यह है क्योंकि ग्राहक एक अलग MaxBufferSize सेटिंग है है: यहाँ एक उदाहरण है।

समस्या को दूर करने के लिए:

  1. राइट-क्लिक करें पेड़ के नीचे स्थित कॉन्फ़िग फ़ाइल नोड पर
  2. संपादित करें SvcConfigEditor

की सूची के साथ मैक्सबफर आकार सहित संपादन योग्य सेटिंग्स दिखाई देंगी।

नोट:स्वत: निर्मित प्रॉक्सी ग्राहक भी डिफ़ॉल्ट रूप से 65536 को MaxBufferSize निर्धारित किया है।

+1

अच्छा पकड़ो! यह मेरी समस्या हल हो गया ... –

+0

धन्यवाद यूयूयूयू !!! – RoeeK