2010-10-05 9 views
8

के साथ समस्या मुझे बड़ी मात्रा में डेटा पुनर्प्राप्त करने में कोई परेशानी नहीं है, लेकिन सेवा में इसे वापस भेजना इस त्रुटि को प्रदर्शित करता है। मैंने web.config और servicereferences.clientconfig दोनों में तत्व जोड़ने का प्रयास किया है और यह किसी भी में पहचाना नहीं गया है। एक बिंदु पर मुझे bingElementExtensions को बाध्य करने के लिए readerQuotas जोड़ने के बारे में एक संदेश मिला, लेकिन मुझे यह कैसे करना है इसके बारे में कुछ भी उपयोगी नहीं मिल रहा है। मुझे पदों में कहा गया कि मुझे devenv.exe.config को संशोधित करना था और ऐसा करना, लेकिन उस वीएस को बंद करना। मैं इसे दो दिनों तक हल करने की कोशिश कर रहा हूं इसलिए किसी भी मदद की सराहना की जाएगी।अन्य "एक्सएमएल डेटा पढ़ने के दौरान अधिकतम स्ट्रिंग सामग्री लंबाई कोटा (8192) पार हो गया है।" डब्ल्यूसीएफ और सिल्वरलाइट 4

संपादित करें:

<bindings> 
    <customBinding> 
    <binding name="QaRiM.Web.Service1.customBinding0"> 
     <binaryMessageEncoding /> 
     <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" /> 
    </binding> 
    </customBinding> 
</bindings> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="true" /> 
<services> 
    <service name="QaRiM.Web.Service1"> 
    <endpoint address="" binding="customBinding" bindingConfiguration="QaRiM.Web.Service1.customBinding0" 
     contract="QaRiM.Web.Service1" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

और servicereferences.clientconfig: यहां web.config के बंधन अनुभाग है

<configuration> 
    <system.serviceModel> 
     <bindings> 
      <customBinding> 
       <binding name="CustomBinding_Service1"> 
        <binaryMessageEncoding /> 
        <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" /> 
       </binding> 
      </customBinding> 
     </bindings> 
     <client> 
      <endpoint address="http://localhost:36533/Service1.svc" binding="customBinding" 
       bindingConfiguration="CustomBinding_Service1" contract="ServiceReference1.Service1" 
       name="CustomBinding_Service1" /> 
     </client> 
    </system.serviceModel> 
</configuration> 

दोनों बनाम द्वारा उत्पन्न किया गया

+0

आप अपने ग्राहक और सेवा config फ़ाइलों के बंधन तत्वों पोस्ट कर सकते हैं तो बस यहाँ देखा XmlDictionaryReaderQuotas के कहने का उपयोग करने के MaxStringContentLength की स्थापना? साथ ही सेवा के लिए एंडपॉइंट भी, क्योंकि इसे बाध्यकारी का संदर्भ देना चाहिए। – Jab

उत्तर

9

आप बस maximum string content length के लिए कॉन्फ़िगरेशन खो रहे हैं।

अपने बंधन विशेषताएं (क्लाइंट और सर्वर)

<readerQuotas maxStringContentLength="2147483647" /> 

क्षमा करने के लिए इस जोड़ें, मुझे नहीं पता था कि इस बच्चे तत्व एन्कोडिंग के नीचे स्थित है जब एक कस्टम बाइंडिंग का उपयोग कर इस्तेमाल किया जा रहा है, यह प्रतीत होता है आपके उदाहरण में binaryMessageEncoding। यदि नहीं, तो सेटिंग के साथ अन्य एन्कोडिंग आज़माएं।

<bindings> 
    <customBinding> 
     <binding name="QaRiM.Web.Service1.customBinding0">     
      <binaryMessageEncoding> 
       <readerQuotas maxStringContentLength="2147483647"/> 
      </binaryMessageEncoding> 
     </binding> 
    </customBinding> 
</bindings> 
+1

यह समस्या है, यह मान्य बाध्यकारी विशेषता नहीं है। –

+0

@ जिम पेरी कृपया मेरे उत्तर के अपडेट पर एक नज़र डालें। – Jab

+0

यह या तो काम नहीं करता है। यह सेवाओं कॉन्फ़िगरेशन में मान्य नहीं है और इसके साथ web.config में सेवाओं के लिए प्रत्येक कॉल ऐप को क्रैश करता है। –

1

संपादित: यह एक अधूरी मसौदा, खेद

  1. सेवा/ग्राहक परिभाषाओं सिंक्रनाइज़ किया जा रहा बचाया आप क्या किया है लेकिन यह निश्चित रूप जरूरी है कि वे मेल है।
  2. क्या आप वाकई कस्टम बाध्यकारी की आवश्यकता है? क्या आपने आधार के रूप में ws (Dual) Http बाइंडिंग का उपयोग करने का प्रयास किया है?
  3. यह पोस्ट रुचि का हो सकता है: silverlight 3 wcf service configuration -- getting maxreceivedmessagesize error, विशेष रूप से httpRuntime maxRequestLength = "2147483647" सेटिंग।
  4. आपको maxBufferPoolSize और maxItemsInObjectGraph सेट करने की आवश्यकता हो सकती है। लिंक्ड एसओ पोस्ट में कॉन्फ़िगरेशन ने सबकुछ बहुत अधिक किया है।
  5. मुझे नहीं पता कि आप चैनलफैक्टरी क्लाइंट प्रॉक्सी विधि या सेवा संदर्भ विधि का उपयोग करते हैं, लेकिन आप पूर्व मार्ग पर जा सकते हैं। डीबग सत्रों में मुझे कॉन्फ़िगरेशन से कुछ मूल्यों को लागू नहीं किया जा रहा था जैसा कि मैंने सोचा था, लेकिन इस विषय पर मेरी अल्पकालिक स्मृति अब खो गई है।
  6. कुछ हद तक # 5 से संबंधित, आप डब्ल्यूसीएफ टेस्ट क्लाइंट मुद्दों में भाग सकते हैं जहां परीक्षण क्लाइंट डिफ़ॉल्ट बाइंडिंग का उपयोग कर रहा है जिसके लिए आप तैयार नहीं हैं।
  7. एक और पद है कि ब्याज की हो सकती है: http://www.haveyougotwoods.com/archive/2008/04/14/wcf-message-streaming.aspx

स्ट्रीमिंग आपका सर्वश्रेष्ठ दांव संभावना क्लाइंट की तरफ बफ़र transferMode को अवरुद्ध प्रकृति से रखने के लिए है। मुझे यह नहीं पता कि डेटा लगातार कितना बड़ा होगा, लेकिन यदि आप उस मार्ग पर गए तो आपकी सेवा क्लाइंट एंड पर थोड़ी अच्छी तरह से व्यवहार करेगी। स्ट्रीमिंग के लिए क्लाइंट साइड को कॉन्फ़िगर करने पर एक अच्छा प्राइमर यहां पाया जा सकता है: http://systemmetaphor.blogspot.com/2009/05/using-wcf-to-transfer-large-data-files.html

उम्मीद है कि इसके बाद के संस्करण के कुछ संयोजन में मदद करता है

+0

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

+0

Google पर मिलने वाले दस्तावेज़ों में खड़े बिट्स

+0

ऐसा लगता है कि आप सही दिशा में हैं लेकिन आपको यह पता लगाने में सक्षम होना चाहिए कि एएसपी.NET में ऐप क्यों विफल रहा है। मैंने केवल डब्ल्यूसीएफ का उपयोग किया है स्वयं होस्टिंग मार्ग और मैं यह कहना चाहता हूं कि मुझे अजीब त्रुटियों को निर्धारित करने के लिए थोड़ा और स्वतंत्रता दी गई है जैसे कि एएसपी.नेट जैसे कुछ भी हो रहा है (ऐसा नहीं है कि यह ज्यादातर मामलों में है) –

0

आप सेवा के लिए config भीतर maxStringContentLength स्थापित करने की कोशिश की? मेरी स्थिति में, इसे सिल्वरलाइट क्लाइंट के लिए maxStringContentLength के वांछित मान का उपयोग करने की अनुमति देने वाली सेवा पर सेट करना।

एक नोट यह है कि यदि आप लंबे तारों की अनुमति दे रहे हैं, लेकिन maxReceivedMessageSize समायोजित न करें, इससे समस्याएं भी हो सकती हैं। maxReceivedMessageSize को सेवा और क्लाइंट दोनों पर नियंत्रित करने की आवश्यकता है, क्योंकि कोई दूसरे से मूल्यों का वारिस नहीं करेगा।

2

यदि अधिकतम स्ट्रिंग सामग्री की लंबाई कोटा (8192) XML डेटा को पढ़ते समय हो गया है। "आप सेट के बाद भी आप भी का एक उदाहरण बनाने के द्वारा अपने कोड में समस्या का समाधान कर सकते हैं अपने web.config सेटिंग्स अनदेखी कर रहा है XmlDictionaryReaderQuotas और 2147483647

रूप mycreatedreaderquota

XmlDictionaryReaderQuotas mycreatedreaderquota = new XmlDictionaryReaderQuotas(); 
     mycreatedreaderquota.MaxStringContentLength = 2147483647; 

     XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(stream, mycreatedreaderquota); 
संबंधित मुद्दे