मेरे पास एक एमवीसी वेबपीआई साइट है जो अनुरोधों को प्रमाणित करने के लिए OAuth / टोकन प्रमाणीकरण का उपयोग करती है। सभी संबंधित नियंत्रकों के पास सही विशेषताएँ हैं, और प्रमाणीकरण ठीक काम कर रहा है।
समस्या यह है कि सभी अनुरोधों को एक विशेषता के दायरे में अधिकृत नहीं किया जा सकता है - कुछ प्राधिकरण जांच को कोड में किया जाना चाहिए जिसे नियंत्रक विधियों द्वारा कहा जाता है - इस मामले में 401 अनधिकृत प्रतिक्रिया वापस करने का सही तरीका क्या है?
मैंने कोशिश की है throw new HttpException(401, "Unauthorized access");
, लेकिन जब मैं ऐसा करता हूं तो प्रतिक्रिया स्थिति कोड 500 है और मुझे स्टैक ट्रेस भी मिलता है। यहां तक कि हमारे लॉगिंग डेलिगेटिंगहैंडलर में हम देख सकते हैं कि प्रतिक्रिया 500 है, 401 नहीं।
HttpResponseException
जब एक वापस करने के लिए एक बनाम फेंक दिया जाएUnauthorized()
। 'अपेक्षित' त्रुटि के लिए अपवाद का उपयोग करना थोड़ा-सा पैटर्न-विरोधी है, इसलिए यदि ऐसे मामले हैं जिनसे आपको इस गलती के लिए कॉल की उम्मीद है, तो वापसUnauthorized()
करना शायद सही कॉल है।HttpResponseException
वास्तव में अप्रत्याशित के लिए सहेजें ।