2010-04-19 12 views
15

कहा जाता है मेरे पास एक वेब सेवा है जो डेस्कटॉप एप्लिकेशन पर डेटा लौटा रही है। मेरी समस्या यह है कि, जब वेब सेवा डेटा की छोटी मात्रा लौटाती है तो सब ठीक काम करता है लेकिन जब डेटा की मात्रा बड़ी होती है तो यह निम्नलिखित अपवाद फेंकता है:डब्ल्यूसीएफ विधि दो बार

System.Net.WebException: अंतर्निहित कनेक्शन बंद था: एक प्राप्त होने पर अप्रत्याशित त्रुटि हुई।

और जब मैं वेब सेवा डिबग कर रहा हूं, तो मुझे लगता है कि इस विशेष विधि को दो बार बुलाया जाता है। यह रिटर्न स्टेटमेंट को पहली बार कुछ भी नहीं होता है, लेकिन जब यह दूसरी बार निष्पादित करता है तो डेस्कटॉप ऐप में ऊपर उल्लिखित अपवाद फेंक दिया जाता है।

मुझे स्टैक ओवरफ्लो पर पहले समान पद मिले लेकिन उन्होंने मेरी समस्या का समाधान नहीं किया। क्या कोई मुझे बता सकता है कि यहां क्या हो रहा है?

धन्यवाद!

+0

क्या आप क्लाइंट या सर्वर पर यह अपवाद प्राप्त कर रहे हैं? मुझे लगता है कि यह ग्राहक पर है।उस स्थिति में, सर्वर में क्या होता है यह देखने के लिए आपको Windows इवेंट लॉग में देखना होगा। सेवा में क्या हो रहा है यह देखने के लिए आप डब्ल्यूसीएफ ट्रेसिंग भी चालू कर सकते हैं। –

+0

इस अपवाद के लिए विंडोज इवेंट लॉग में कुछ भी नहीं है। क्या आप कृपया मेरी मदद कर सकते हैं कि वेब सेवा का पता कैसे लगाएं। मैंने पहले कभी ऐसा नहीं किया है। भले ही आप मुझे ट्रेसर के लिए एक लिंक अग्रेषित कर सकें, यह बहुत मददगार होगा। धन्यवाद –

उत्तर

12

ऐसा इसलिए हो सकता है क्योंकि संदेश का आकार डिफ़ॉल्ट संदेश आकार से अधिक है। आप एंडपॉइंट की कॉन्फ़िगरेशन में increasing the this value आज़मा सकते हैं। आप this post पर भी एक नज़र डाल सकते हैं।


अद्यतन:

आगे समस्या मैं तुम्हें config फ़ाइल में निम्न रखकर सेवा पर निशान को सक्रिय करने का सुझाव देते हैं का निदान करने के लिए:

<system.diagnostics> 
    <trace autoflush="true"> 
    </trace> 
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="Information, ActivityTracing" 
       propagateActivity="true"> 
      <listeners> 
       <add name="sdt" 
        type="System.Diagnostics.XmlWriterTraceListener" 
        initializeData="WcfDetailTrace.e2e" /> 
      </listeners> 
     </source> 
    </sources> 
</system.diagnostics> 

यह WcfDetailTrace.e2e ट्रेस उत्पन्न होगा फ़ाइल जिसे आप Service Trace Viewer Tool के साथ खोल सकते हैं जो आपको कॉल और त्रुटि संदेश के बारे में विस्तृत जानकारी प्रदान करेगा।

+0

आकार समस्या नहीं है। मैं आकार 16 एमबी पर सेट कर रहा हूं और स्थानांतरित किया जा रहा डेटा उससे कम है। मैंने पहले से ही दोनों पदों पर ध्यान दिया है, लेकिन मदद नहीं की प्रतीत होती है। कृपया कोई अन्य सुझाव कृपया? धन्यवाद .. –

+1

@ सौरभ, कृपया मेरा अपडेट देखें। –

+1

@DarinDimitrov इसने मेरे जीवन और परियोजना को बचाया, यह पता नहीं लगा कि क्या गलत था। इस ट्रेस में पाया गया कि ईएफ-एंटिटी डेटा अनुबंध नहीं है। धन्यवाद! :) – Hitin

6

मुझे हाल ही में यह समस्या थी।

यह पता चला कि सिस्टम द्वारा लिखित डब्ल्यूसीएफ लॉग का विश्लेषण करना। डायग्नोस्टिक्स.एक्सएमएलवाइटर ट्रेस लिस्टनर ने मेरे द्वारा स्थापित डेटा अनुबंध के साथ एक समस्या उत्पन्न की।

मैं Dictionary<int, object> लौट रहा हूं (साइड नोट: हाँ, मुझे पता है कि यह वास्तव में बुरा है !, लेकिन मैं जवान हूं और पैसे की जरूरत है)। मैं [KnownType] DataContract के लिए वापसी मान पर विशेषता शामिल करना भूल:

[DataContract] 
    [KnownType(typeof(Dictionary<int, double>))] 
    [KnownType(typeof(Dictionary<int, ChannelData>))] 
    [KnownType(typeof(Dictionary<string, Dictionary<int, double>>))] 
    public class MyCoolObject: ICoolObject 
    { 
[DataMember] 
     public Dictionary<string, object> Results 
     { 
      get { return _results; } 
      set { _results = value; } 
     } 
    } 
1

मैं हाल ही में इस समस्या थी, और यह पता चला मैं [DataContract] के साथ

आंकड़ा अंतरण वर्गों में से एक चिह्नित करने के लिए भूल गए हैं
5

मुझे भी यह समस्या थी। मेरे लिए, ऐसा इसलिए हो रहा था क्योंकि मेरे पास [DataMember] संपत्ति get{} थी लेकिन set{} नहीं थी। set{} जोड़ने के बाद यह व्यवहार बंद हो गया।

+0

आपको बहुत बहुत धन्यवाद के लिए एक संक्षिप्त जोड़ने की कोशिश उपलब्ध नहीं है! यह मेरी समस्या हल हो गई। मुझे समझ में नहीं आता कि यह क्यों प्रभावित करता है। – Husain

+0

नमस्ते मुझे {} लेकिन कोई सेट {} प्राप्त करने के साथ भी एक ही समस्या का सामना करना पड़ रहा है। वास्तव में क्या संपत्ति का मतलब है कि वो संपत्ति – Veeresh123

1

मुझे इसी समस्या का सामना करना पड़ा। यह पता चला कि डब्ल्यूसीएफ DateTime जेएसओएन के रूप में वापस नहीं कर सका, इसलिए मुझे इसे Nullable<DateTime> बनाना पड़ा।

1

मुझे यह समस्या भी थी और मेरा समाधान बैटर के समान था, लेकिन मोड़ के साथ। मेरे पास एक कक्षा थी जिसमें object प्रकार की संपत्ति थी। मुझे KnownType वर्ग को प्रत्येक प्रकार के ऑब्जेक्ट को पकड़ने के लिए कक्षा में जोड़ना पड़ा था। मैं KnownType ऑन-द-फ्लाई को पॉप्युलेट नहीं कर सका क्योंकि कक्षा को पता नहीं था कि ऑब्जेक्ट में क्या होगा।