2012-06-17 9 views
35

मुझे लगता है कि मुझे अपनी डब्ल्यूसीएफ सेवा को बड़ी मात्रा में डेटा भेजने के लिए स्वीकार नहीं किया जा रहा है।डब्ल्यूसीएफ सेवा maxReceivedMessageSize basicHttp बाइंडिंग समस्या

मैंने क्लाइंट के लिए maxReceivedMessageSize कॉन्फ़िगर किया है और बड़े डेटा को ठीक से प्राप्त कर सकता है, यह समस्या नहीं है। यह सेवा तक डेटा भेज रहा है।

मैंने सेवा को कॉन्फ़िगर करने का प्रयास किया लेकिन कोई भाग्य नहीं लिया।

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation debug="true"/> 
    </system.web> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
      <serviceDiscovery /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="Service.IService"> 
     <clear /> 
     <endpoint binding="basicHttpBinding" bindingConfiguration="MessageSizeBasic" contract="Service.IService" /> 
     </service> 
    </services> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="MessageSizeBasic" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" 
      maxArrayLength="16348" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </binding> 
     </basicHttpBinding> 
     <webHttpBinding> 
     <binding name="MessageSizeWeb" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" /> 
     </webHttpBinding> 
    </bindings> 
    </system.serviceModel> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

उत्तर

61

अपने बंधन यह सब अंतिम बिंदुओं को लागू होते हैं, और वांछित परिणाम का उत्पादन करना चाहिए कर देगा से नाम हटाना: यहाँ मेरी web.config है। इतना के रूप में:

<services> 
    <service name="Service.IService"> 
    <clear /> 
    <endpoint binding="basicHttpBinding" contract="Service.IService" /> 
    </service> 
</services> 
<bindings> 
    <basicHttpBinding> 
    <binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
     <readerQuotas maxDepth="32" maxStringContentLength="2147483647" 
     maxArrayLength="16348" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
    </binding> 
    </basicHttpBinding> 
    <webHttpBinding> 
    <binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" /> 
    </webHttpBinding> 
</bindings> 

भी ध्यान रखें कि मैं अंत बिंदु नोड से bindingConfiguration विशेषता हटा दिया। अन्यथा आपको अपवाद मिलेगा।

यह वही यहाँ समाधान पाया गया था: Problem with large requests in WCF

+1

आपको बहुत बहुत धन्यवाद। एक नोट के रूप में मुझे अपने एंडपॉइंट से बाध्यकारी कॉन्फ़िगरेशन विशेषता को भी हटाना पड़ा क्योंकि मैंने एक नाम का संदर्भ दिया था। – BlargleMonster

+1

प्रदान किए गए समाधान मेरे लिए काम नहीं करते हैं। – Arti

+0

web.config में उपर्युक्त परिवर्तनों के अलावा मुझे और क्या करने की ज़रूरत है? – Arti

0

वास्तव में IService (सेवा नाम स्थान पर) आपकी सेवा वर्ग का नाम है? <service> तत्व की name विशेषता में सेवा वर्ग के नाम पर आप शायद मूल रूप से मेल नहीं खाते थे।

+0

इस समय मेरा सेवा इंटरफ़ेस वास्तव में IService है। मैं इसे बाद में बदल सकता हूं लेकिन अभी के लिए यह मेरे सिस्टम में एक सिंगलटन का थोड़ा सा है। – BlargleMonster

+1

सेवा * इंटरफ़ेस *, या सेवा ** कक्षा **? '' तत्व के लिए 'नाम' विशेषता का मान सेवा ** वर्ग ** का नाम होना चाहिए। – carlosfigueira

+0

मैंने उन विकल्पों को आजमाया और यह एक और संभावित समाधान है। मुझे यकीन नहीं है कि सेवा कॉन्फ़िगरेशन संपादक टूल केवल मेरी सेवा का प्रबंधन करते समय मुझे इंटरफ़ेस क्यों चुनने देता है, लेकिन मुझे फिर से नामों का उपयोग करने की आवश्यकता होने पर इसे ठीक करने का एक और तरीका जानकर खुशी हुई। – BlargleMonster

0

HTTPS का उपयोग करते समय बजाय बंधन पर की है, यह httpsTransport टैग के साथ बंधन में डाल:

<binding name="MyServiceBinding"> 
     <security defaultAlgorithmSuite="Basic256Rsa15" 
       authenticationMode="MutualCertificate" requireDerivedKeys="true" 
       securityHeaderLayout="Lax" includeTimestamp="true" 
       messageProtectionOrder="SignBeforeEncrypt" 
       messageSecurityVersion="WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10" 
       requireSignatureConfirmation="false"> 
     <localClientSettings detectReplays="true" /> 
     <localServiceSettings detectReplays="true" /> 
     <secureConversationBootstrap keyEntropyMode="CombinedEntropy" /> 
     </security> 
     <textMessageEncoding messageVersion="Soap11WSAddressing10"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" maxBytesPerRead="4096" 
         maxNameTableCharCount="16384"/> 
     </textMessageEncoding> 
     <httpsTransport maxReceivedMessageSize="2147483647" 
         maxBufferSize="2147483647" maxBufferPoolSize="2147483647" 
         requireClientCertificate="false" /> 
    </binding> 
संबंधित मुद्दे