2011-02-18 7 views
9

ठीक है इसलिए मैंने एक अच्छी छोटी डब्ल्यूसीएफ सेवा स्थापित की है और परीक्षण किया है। क्लाइंट एक स्ट्रिंग बनाता है और इसे सेवा और सेवा पर एक विधि में पास करता है, फिर उसे फ़ाइल के रूप में सहेजता है। परीक्षण डाटा की छोटी मात्रा के साथ पूरी तरह से काम करता है, लेकिन जब मैं क्या यह करने के लिए चाहिए था के साथ प्रयास करें -डब्ल्यूसीएफ को बड़े तारों को पारित करने के लिए अधिकतम स्ट्रिंगकंटेंट लम्बाई कहां बढ़ाता है?

फ़ॉर्मेटर एक अपवाद है, जबकि deserialize की कोशिश कर फेंक दिया इस पर गिर जाता है, त्रुटि के साथ - कुछ धारावाहिक .net वस्तुओं पारित संदेश: अनुरोध डेटा के deserializing शरीर में त्रुटि एक्सएमएल डेटा पढ़ने के दौरान ऑपरेशन अधिकतम स्ट्रिंग सामग्री लंबाई कोटा (8192) के लिए संदेश पार हो गया है। यह कोटा XmlDictionaryReaderQuotas पर MaxStringContentLength संपत्ति बदलकर बढ़ाया जा सकता है इस्तेमाल किया वस्तु जब एक्सएमएल पाठक

तो मैं इस आंख मारना और उस MaxStringContentLength संपत्ति के टैग में एक "readerQuotas" टैग पर सेट किया जाना चाहिए लगता है बनाने कॉन्फ़िगरेशन फ़ाइल, इस तरह:

 <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 

तो मैं इसे बदलता हूं। मैं इसे अपने क्लाइंट की App.config फ़ाइल पर बदलता हूं। मैं इसे App.config फ़ाइल और मेरे सर्वर की Web.config फ़ाइल पर बदलता हूं। मैं इसे अपनी यूनिट टेस्ट प्रोजेक्ट की App.config फ़ाइल में बदलता हूं। और इसमें से कोई भी काम नहीं करता - मुझे एक ही त्रुटि मिलती है।

दिलचस्प, और निराशाजनक रूप से, जब मैंने अपनी सेवा को देखने के लिए WcfClient.exe को निकाल दिया, उससे जुड़ा हुआ है और कॉन्फ़िगरेशन फ़ाइल (Client.dll.config) पर एक नज़र डाली है, तो मुझे यह पता लगाने के लिए gobsmacked था -generated फ़ाइल अपने परिवर्तनों में से कोई भी निहित और करने के लिए पुन: निर्धारित किया: मुझे पता नहीं कहाँ से इन मूल्यों को हो रही है है

<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 

- कहीं नहीं मेरा पूरा समाधान में इन सेट किया जा रहा है। तो यह डिफ़ॉल्ट का उपयोग करना होगा, लेकिन मुझे समझ में नहीं आता है कि जब मैं सर्वर और क्लाइंट दोनों पर कस्टम कॉन्फ़िगरेशन फ़ाइलें प्रदान करता हूं तो यह डिफ़ॉल्ट का उपयोग क्यों कर रहा है।

क्या कोई मुझे इसे उलझाने में मदद कर सकता है?

+1

क्या आप बाध्यकारी के लिए कॉन्फ़िगर पोस्ट कर सकते हैं जहां आपने 'readerQuotas' तत्व रखा है? – vlad

उत्तर

4

1) क्या यह संभव है कि आपका एंडपॉइंट कस्टम बाइंडिंग का उचित संदर्भ नहीं दे रहा है? क्या आप अपना बाध्यकारी और एंडपॉइंट अनुभाग पोस्ट कर सकते हैं?

2) WcfTestClient अपनी सेवा या क्लाइंट कॉन्फ़िगरेशन का उपयोग अपनी कॉन्फ़िगरेशन सेट करने के लिए नहीं करता है। आपको सेवा निष्पादित करने से पहले WcfTestClient क्लाइंट बाइंडिंग डेटा सेट अप करने के लिए SvcConfigEditor के साथ Client.dll.config मैन्युअल रूप से संपादित करने की आवश्यकता होगी।

यदि आप टूल्स -> विकल्प मेनू देखते हैं तो आप अपने WcfTestClient कॉन्फ़िगरेशन परिवर्तनों को जारी रख सकते हैं। WcfTestClient बारे में अधिक जानकारी के लिए, यह बाहर की जाँच: http://msdn.microsoft.com/en-us/library/bb552364.aspx

0

तुम भी अपने आप में इस तरह बंधन पर maxReceiveMessageSize आदि बढ़ाने के लिए जरूरत है ...

बाध्यकारी नाम = "BasicHttpsBinding_IService1" maxReceivedMessageSize = "34,000,000" maxBufferPoolSize = " 34000000 "maxBufferSize =" 34000000 "

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

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