8

मैंने इस पर कुछ निश्चित दस्तावेज के लिए शिकार किया है लेकिन किसी को भी कोई भाग्य नहीं मिला है।HttpWebRequest.GetResponse() - क्या विशिष्ट स्थिति कोड फेंकने के लिए अपवाद का कारण बनता है?

असल में - प्रश्न यह है - जिसके लिए सर्वर से वापस आने वाले HTTP स्टेटस कोड HttpWebRequest.GetResponse() कुछ कहने के बाद वेबएक्सप्शन उत्पन्न करते हैं, एक पोस्ट?

विशेष रूप से - क्या यह स्थिति 200 के अलावा किसी अन्य चीज़ के लिए वेबएक्सप्शन उत्पन्न करेगा? या यह केवल 400, 404, और 500 (तर्क के लिए) के लिए वेबएक्सप्शन उत्पन्न करेगा।

मैं तब से जानना चाहता हूं, जिस सर्वर से मैं संचार कर रहा हूं, वह HTTP 200 के अलावा कुछ भी परिभाषित करता है ठीक है एक त्रुटि स्थिति के रूप में वापस आ रहा है - और कुंजी यह है कि, क्या मैं 200 से अधिक किसी भी चीज़ के लिए उत्पन्न वेबएक्सप्शन पर भरोसा कर सकता हूं? (मैंने वर्तमान में अपना कोड लिखा है ताकि यह वास्तव में 200 ओके सुनिश्चित करने के लिए रिटर्न स्टेटस कोड की जांच करे और यदि यह नहीं है, तो उचित कार्रवाई करें - लेकिन इसके बीच दोहराव है और वेबएक्सप्शन के लिए कैच ब्लॉक है, और मैं इसे साफ़ करने की उम्मीद कर रहा हूं ...)

दस्तावेज़ीकरण के लिए कोई भी प्रासंगिक लिंक सबसे सराहना की जाएगी।

धन्यवाद!

+0

एक संपूर्ण विश्लेषण के लिए संबंधित प्रश्नों का निम्नलिखित उत्तर देखें: http://stackoverflow.com/questions/ 2182544/c-httpwebrequest-getresponse-how-is-statuscode-use-handled-for-a-noncludi/2183380 # 2183380 –

उत्तर

1

वेबएक्सप्शन सिस्टम से seperate system है। यह मुख्य रूप से है क्योंकि HTTP त्रुटियों को ब्राउज़र या क्लाइंट द्वारा वापस किया जाता है और वेब पेज अपवाद सर्वर द्वारा फेंक दिया जाता है जबकि आपका पृष्ठ बनाते हैं। जब तक एक HTTP त्रुटि पाई जाती है तो पृष्ठ क्लाइंट को भेजा जाता है और आपको इसके बारे में पता नहीं चलेगा।

0

मुझे लगता है कि यह होगा, लेकिन यह एक जोखिम भरा धारणा की तरह लगता है। एक बात के लिए, MSDN docs यह स्पष्ट करें कि GetResponse केवल WebException के अलावा अपवाद फेंक देगा। हालांकि, मैं अनुभव से निश्चित रूप से कह सकता हूं कि "304 गैर-संशोधित" प्रतिक्रिया WebException के रूप में फेंक दी जाएगी।

यह सब बात एक गंध कोड गंध दे रही है; निष्पादन के प्रवाह को नियंत्रित करने के लिए अपवादों का उपयोग न करें। आप अपवादों को उचित तरीके से संभालने से बेहतर होंगे, फिर अपने स्वीकार्य मूल्यों के लिए StatusCode संपत्ति को स्पष्ट रूप से जांचें।

+0

वेबएक्सप्शन स्वयं ठीक से पकड़ा गया है और चेक किया गया है - हालांकि समस्या यह है कि अगर getresponse विधि नहीं है एक वेबएक्सप्शन उत्पन्न करें, बल्कि बस कुछ परिस्थितियों में चीजों को आगे बढ़ने दें (यानी जब तक कि सर्वर HTTP 200 ओके जारी नहीं करता है तब तक मैंने जो कुछ देखा है, उससे एक बेवकूफ़ बन जाता है ... लेकिन इस बारे में कुछ भी निश्चित नहीं है कि यह किसी भी दस्तावेज में है या नहीं मैंने देखा है...) –

1

प्रतिक्रिया & वेब अपवादों को पकड़ने और जांचने के बाद एक स्पष्ट जांच करने के समाप्त हो गया; परिणामस्वरूप कुछ डुप्लिकेट कोड होते हैं लेकिन स्थिति नहीं है कि कोई वेबएक्सप्शन हमेशा नहीं होगा यदि स्थिति 200 नहीं है।

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