2010-09-03 18 views
7

मेरे पास net.tcp परिवहन के साथ एक डब्ल्यूसीएफ क्लाइंट/सेवा है। जब मैं क्लाइंट पक्ष पर डब्ल्यूसीएफ ट्रेसिंग चालू करता हूं तो मुझे ट्रेस में निम्न त्रुटियां दिखाई दे रही हैं (सेवा ट्रेस व्यूअर से स्क्रीनशॉट देखें)। अजीब बात यह है कि डब्ल्यूसीएफ इस त्रुटि को संभालने और पुनर्प्राप्त कर रहा है और मेरे क्लाइंट को कोई अपवाद नहीं मिला है और यह काम जारी रखता है। यह अपवाद बेतरतीब ढंग से होता है, यादृच्छिक रूप से लेकिन हर वेब विधि कॉल पर नहीं। क्लाइंट (विंडोज एक्सपी) प्रमाणीकरण खिड़कियां है, एसपीएन द्वारा सेवा की पहचान की जाती है, सेवाएं एनएलबी (विंडोज सर्वर 2003) के पीछे विंडोज़ सेवा पर स्वयं-होस्ट की जाती हैं। क्या कोई मुझे बता सकता है कि यहां क्या हो रहा है।अजीब WCF net.tcp अपवाद

ट्रेस एक्सएमएल से अपवाद स्टैकट्रेस है:

<ExceptionString> 
System.ServiceModel.Security.MessageSecurityException: The server rejected the upgrade request. ---&gt; System.ServiceModel.ProtocolException: Error while reading message framing format at position 0 of stream (state: ReadingUpgradeRecord) ---&gt; System.IO.InvalidDataException: More data was expected, but EOF was reached. 
    --- End of inner exception stack trace --- 
    --- End of inner exception stack trace --- 
</ExceptionString> 

Screenshot:

+1

पृष्ठभूमि के रूप में, हमारे कुछ उपयोगकर्ता कई अपवादों की रिपोर्ट कर रहे थे और मैं जांच कर रहा था कि केवल कुछ पीसी में ऐसा क्यों लगता है। इसलिए मैंने अपने पीसी पर एक सेवा ट्रेस शुरू किया और मुझे आश्चर्य हुआ क्योंकि क्लाइंट द्वारा इन अपवादों को कभी प्राप्त नहीं किया गया है, डब्ल्यूसीएफ उन्हें पकड़ रहा है। मैं सोच रहा हूं कि यह संदेश सुरक्षा सुरक्षा अपवाद अंततः कुछ क्लाइंट को वास्तविक अपवाद प्राप्त करने का कारण बन रहा है। कुछ क्लाइंट इस अपवाद को लॉग करते हैं: net.tcp से कनेक्ट नहीं हो सका: // myservice: 9501/someService। कनेक्शन प्रयास 00: 00: 21.3873440 के समय अवधि के लिए चला गया। टीसीपी त्रुटि कोड 10060: – softveda

+0

आपने एनएलबी का उल्लेख किया है। क्या आप चिपचिपा सत्र (सत्र संबंध) का उपयोग करते हैं? –

+1

कोई एनएलबी सत्र संबंध पोर्ट नियमों में कोई नहीं है। यह सेवा 2 मिनट idletimeout और 1 मिनट लीसटाइमआउट के साथ एक कस्टम net.tcp बाध्यकारी का उपयोग कर रही है। हालांकि मुझे पता चला कि हम गलती examplecontextmode का गलती से उपयोग कर रहे हैं क्योंकि किसी ने सोचा कि यह डिफ़ॉल्ट है। मैं इसे जल्द ही पेकॉल में बदल दूंगा। – softveda

उत्तर

-3

सुनिश्चित नहीं हैं कि क्या वास्तविक समस्या हो सकती है और अगर यह स्ट्रीमिंग से संबंधित है (मैं में गोता जाएगा)। वैसे भी आप सर्वर की तरफ अपवाद पकड़ने का प्रयास कर सकते हैं और इसके बजाय संचार अपवाद फेंक सकते हैं।

catch (Exception ex) 
{ 
    throw new CommunicationException(ex.Message, ex); 
} 

इस तरह क्लाइंट प्रॉक्सी को अपवाद को अनदेखा नहीं करना चाहिए और इसकी स्थिति "दोषपूर्ण" होनी चाहिए।

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