मैं अपने सेवा में जगह में मानक त्रुटि सौंपने है:निम्न स्तर की डब्ल्यूसीएफ त्रुटियों को कैसे संभालें?
- मैं एक IErrorHandler सेवा सेवा निष्पादन के दौरान अप्रत्याशित त्रुटियों को संभालने के लिए करने के लिए झुका दिया है।
- अपेक्षित मामलों को संभालने के लिए मैंने अपनी सभी सेवा विधियों में ब्लॉक को आजमाया/पकड़ लिया है।
हालांकि, ऐसे मामले हैं जहां सर्वर पर अपवाद फेंक दिए जाते हैं और न ही उन्हें बुलाया जाता है।
सर्वर 5 सेकंड के लिए बाध्य पर receiveTimout सेट करें:
यहाँ एक मामले में जहां सर्वर अपवाद IErrorHandler को नहीं भेजी जाती है।
:
ग्राहक पर यह करते हैं।
Service1Client sc = new Service1Client();
ICommunicationObject o = sc as ICommunicationObject;
o.Open(); // open channel
sc.GetData(10); // do a first call
Thread.Sleep(10000); // wait longer than the server receiveTimeout
sc.GetData(10); // Attempt another call: server throws a FaulException
उस स्थिति में, सर्वर पर त्रुटि फेंक दी गई है लेकिन मुझे इसे संभालने का तरीका नहीं मिल रहा है (और इसे लॉग करें)। मुझे पता है कि एक त्रुटि उठाई गई है क्योंकि अगर मैं सर्वर प्रक्रिया पर एक डीबगर संलग्न करता हूं और सभी अपवादों को तोड़ता हूं, तो डीबगर टूट जाता है।
मुझे अन्य समान मामले मिल गए हैं जहां मेरे कार्यक्रम में निम्न स्तर की त्रुटियां पास नहीं की गई हैं।
मैं यह सुनिश्चित करने के लिए अपने कोड को कहां लगा सकता हूं कि मैं क्लाइंट ऐप पर वापस आने से पहले सर्वर पर होने वाले सभी अपवादों को संभाल सकता हूं? क्या मुझे अपना खुद का आईसीएचनल या कुछ अन्य निम्न स्तर इंटरफ़ेस लागू करना चाहिए?
धन्यवाद
अद्यतन सितं, 21 2009: पर Microsoft WCF फोरम this धागा देखें। अगर मैं इस प्रकार के अपवाद को संभालना चाहता हूं तो मुझे शायद अपने चैनल को लागू करना होगा। जब मैं अधिक जानकारी प्राप्त करता हूं तो मैं इस पोस्ट को फिर से अपडेट करूंगा।
प्राप्तटाइम सर्वर बाध्यकारी यहां खेलना नहीं चाहिए - यह केवल तभी होगा जब कॉल से GetData() पर प्रतिक्रिया प्राप्त करने में 5 सेकंड से अधिक समय लगे। आपका ग्राहक 10 सेकंड के लिए सो रहा है इसका कोई प्रभाव नहीं पड़ता है। प्रारंभिक परीक्षण सेवा मानते हुए और 5 सेकंड तक प्राप्त करने के लिए सर्वर बाध्यकारी अद्यतन करना समस्या को पुन: उत्पन्न नहीं करता है। ग्राहक पर आपकी गलती क्या है? मुझे वास्तव में एक गलत कॉन्फ़िगर सर्वर बाध्यकारी/व्यवहार पर संदेह होगा, खासकर यदि आप अपने कोड में सेवा में नहीं तोड़ रहे हैं। क्लाइंट/सेवा पर डब्ल्यूसीएफ डीबगिंग सक्षम करें और देखें कि यह क्या दिखाता है। –
जैसा कि एमएसडीएन में वर्णित है, सर्वर प्राप्त होता है टाइमआउट अधिकतम समय होता है जब सर्वर निष्क्रिय निष्क्रिय चैनल की प्रतीक्षा करेगा। उस स्थिति में समय की मात्रा पार हो गई है। क्लाइंट पर अपवाद एक संदेश सुरक्षा सुरक्षा है जिसमें एक आंतरिक FautException है। आंतरिक FaultException का कहना है कि प्राप्त टाइमआउट समाप्त हो गया है। – Sylvain
दिलचस्प। मुझे लगता है कि यह भी एक संकेत हो सकता है कि यह पहली कॉल पर क्यों काम करता था, दूसरा नहीं। क्या आप प्राप्त करने के लिए संदर्भित दस्तावेज़ के लिए एक लिंक अग्रेषित कर सकते हैं? मुझे डर है कि इस मूल्य की मेरी समझ त्रुटिपूर्ण है। जिन दस्तावेज़ों का मैं उल्लेख करता हूं वे http://msdn.microsoft.com/en-us/library/ms731299 हैं।एएसपीएक्स, धन्यवाद! –