2011-11-13 4 views
6

ईश्वर आपको डब्ल्यूसीएफ से प्यार नहीं करता है।ड्रेस्ड डब्ल्यूसीएफ बीएडी अनुरोध 400 maxReceivedMessageSize के कारण अभी भी 65536

मैंने सभी संभावित धागे पढ़े लेकिन मैं वास्तव में अब अटक गया हूं।

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BaseHttp" 
        maxBufferSize="4194304" 
        maxBufferPoolSize="4194304" 
        maxReceivedMessageSize="4194304" /> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="TaskServiceBehavior"> 
      <serviceMetadata httpGetEnabled="True" /> 
      <serviceDebug includeExceptionDetailInFaults="True" /> 
     </behavior> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="TaskServiceBehavior" name="TaskService"> 
     <endpoint 
      address="http://www.mysite.com/TableTaskService/TableTaskService.svc" 
      binding="basicHttpBinding" bindingConfiguration="BaseHttp" 
      contract="TableTaskService.ITableTaskService" /> 
     <endpoint 
      address="mex" 
      binding="mexHttpBinding" 
      contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
       <add baseAddress="http://www.mysite.com/TableTaskService/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <serviceHostingEnvironment> 
     <baseAddressPrefixFilters> 
     <add prefix="http://www.mysite.com/" /> 
     </baseAddressPrefixFilters> 
    </serviceHostingEnvironment> 
</system.serviceModel> 

अब मैं एक संदेश भेजने और यह डिफ़ॉल्ट अपवाद (svclog फ़ाइल में देखा) फेंक दिया हो:

यहाँ WCF विन्यास है

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

अब मैं स्पष्ट रूप से बताता हूं कि यह 4 एमबी होना चाहिए।

मेरे क्लाइंट कोड:

TableTaskServiceClient client = 
    new TableTaskServiceClient(
      new BasicHttpBinding { MaxBufferSize = 4194304, 
           MaxReceivedMessageSize = 4194304 }, 
      new EndpointAddress(GetEndpointAddressString()) 
    ); 

अभी तक यह इस 65536 आकार त्रुटि मुझ पर फेंकता है। यह कहां से आ रहा है ??

क्या यह वास्तव में कोई फर्क नहीं पड़ता कि क्लाइंट MaxReceivedMessageSize सर्वर के समान मूल्य पर सेट करता है? मुझे लगता है कि यह तार्किक होगा कि सर्वर लंबाई के निर्धारण के लिए जिम्मेदार था, क्लाइंट नहीं।

यह चेतावनी भी है (ध्यान दें कि यह कहने में कितना उपयोगी है, यह है: तत्व पर कोई जानकारी जो ओवरराइड हो जाती है या मुझे कुछ याद आ रही है), शायद बेसिचपैंडिंग बिल्कुल ओवरराइड हो जाती है? लेकिन वह क्यों होगा? वैसे भी:

[TraceRecord] गंभीरता चेतावनी TraceIdentifier http://msdn.microsoft.com/en-US/library/System.ServiceModel.OverridingDuplicateConfigurationKey.aspx विवरण विन्यास प्रणाली एक अलग विन्यास दायरे में एक नकली चाबी का पता लगाया है और अधिक हाल ही में मूल्य के साथ अधिभावी है। AppDomain/एल एम/W3SVC/11/रूट/TableTaskService-33-1,296,567 स्रोत System.ServiceModel.Configuration.ServiceBehaviorElementCollection/-८५११४४४१३ ElementName व्यवहार OldElementLineNumber 0 NewElementLineNumber 0

UPDTE: दोनों सेवा और ग्राहक पुन: कॉन्फ़िगर:

TableTaskServiceClient client = new TableTaskServiceClient(
         new BasicHttpBinding { 
          MaxBufferSize = 4194304, 
          MaxReceivedMessageSize = 4194304, 
          MaxBufferPoolSize=4194304, 
          ReaderQuotas = new XmlDictionaryReaderQuotas 
               { 
                MaxArrayLength = 4194304, 
                MaxBytesPerRead = 4194304, 
                MaxDepth = 4194304, 
                MaxNameTableCharCount = 4194304, 
                MaxStringContentLength = 4194304 
               } 
         }, new EndpointAddress(GetEndpointAddressString())); 

अभी भी वही त्रुटि है।

हैं कि कुछ ब्याज मैं एक बाइट [] 467,000 की सरणी ~ लंबाई

उत्तर

1

भेज रहा हूँ इस प्रयास करें की है:

<basicHttpBinding> 
    <binding name="BaseHttp" 
      maxBufferSize="4194304" 
      maxBufferPoolSize="4194304" 
      maxReceivedMessageSize="4194304"> 
    <readerQuotas maxArrayLength="4194304" 
        maxBytesPerRead="4194304" 
        maxDepth="4194304" 
        maxNameTableCharCount="4194304" 
        maxStringContentLength="4194304" 
        /> 
    </binding> 
</basicHttpBinding> 

हालांकि उनमें से कुछ सेटिंग्स समझ में नहीं आती हैं, लेकिन मैं उन्हें बस एक बड़े मूल्य पर सेट करता हूं।

इसके अलावा, एक बार जब आप यह काम कर लेंगे तो मैं आपको सुझाव देता हूं कि आप मूल्यों को कम करें, क्योंकि वे आपकी साइट पर DoS attacks को रोकने के लिए मौजूद हैं।

+0

वही त्रुटि। मैंने दो बार पुष्टि की है कि इस कॉन्फ़िगरेशन का उपयोग सेवा कॉन्फ़िगरेशन में किया जाता है (बेसएचटीपी 1 में बदला गया, त्रुटि देखी गई, वापस बदली, सेवा ब्राउज़र में ठीक काम करती है), फिर भी वही है। मेरा मानना ​​है कि यह काम करना चाहिए .. लेकिन यह सिर्फ नहीं है। –

+0

क्या आप दोनों सेवा और ग्राहक को कॉन्फ़िगर कर रहे हैं? क्योंकि मैं शर्त लगाता हूं कि क्लाइंट साइड पर कैप सेटिंग भी है। –

+0

हां दोनों जगहों को फिर से कॉन्फ़िगर किया गया। –

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