2008-10-20 18 views
32

में प्रोग्रामेटिक रूप से 401 त्रुटि उत्पन्न करने के लिए कैसे करें क्योंकि आप यह देख सकते हैं कि यह एक गैर वेब डेवलपर से एक प्रश्न है। मैं एक एएसपीएक्स पेज चाहता हूं जो कुछ परिस्थितियों में कोड से 401 त्रुटि उत्पन्न कर सकता है। आदर्श रूप में यह आईआईएस मानक पृष्ठ दिखाएगा।ASP.NET पृष्ठ

उत्तर

48

Response.StatusCode सेट करें और फिर - यदि आपको निष्पादन को रोकने की आवश्यकता है - Response.End() पर कॉल करें।

12

MSDN के अनुसार, आप बस निम्न का उपयोग करने में सक्षम होना चाहिए।

Throw New HttpException(401, "Auth Failed") 

संपादित अन्य स्थिति कोड की स्थापना की प्रतिक्रियाएं देखने के बाद और अधिक उपयुक्त होगा।

+3

मैं इस कोशिश की और जब मैं ब्राउज़र में http प्रतिक्रिया की जाँच की, मैं एक 500 (आंतरिक सर्वर त्रुटि) मिला है एक 401 (अनधिकृत) – dreamerkumar

+0

इसके अलावा, फेंक नहीं है अपवाद के बजाय बदतर प्रदर्शन के मामले में? – dreamerkumar

+0

मुझे वास्तव में परवाह नहीं है कि क्या पसंद किया जाता है। यह विधि याद रखने के लिए छोटा और आसान है इसलिए मैं इसका उपयोग करता हूं। – Brad

51
Response.StatusCode = 401; 
Response.End(); 
+7

मुझे नहीं पता कि यह क्यों मतदान किया गया है - यह मेरे कोड (वोट किए गए) उत्तर के समान ही है, बस कोड फॉर्म में। निश्चित रूप से, इसमें लिंक नहीं हैं जो * उपयोगी हो सकते हैं, लेकिन यह अभी भी एक बिल्कुल अच्छा जवाब है ... –

+0

मैं पूरी तरह से जॉन से सहमत हूं। चूंकि मैं दो उत्तरों को स्वीकार नहीं कर सकता, इसलिए मैंने जॉन के जवाब को स्वीकार कर लिया और इसे वोट दिया। कुछ चीजें हैं जो मुझे खुद से समझनी चाहिए, लेकिन यह मुझे एक प्रमुख शुरुआत दे दी। धन्यवाद! –

+3

शायद इसे वोट दिया गया था क्योंकि इसे @ जोन के ठीक बाद सबमिट किया गया था, इसलिए यह एक पिग्गी-बैक उत्तर जैसा दिखता था (हालांकि वे दोनों एक साथ लिखे गए थे)। हालांकि उपरोक्त के लिए धन्यवाद:) –

38

मुझे लगता है कि मैं अभी भी पसंद करते हैं:

throw new HttpException(401, "Auth Failed") 

मुझे नहीं लगता कि Response.StatusCode विधि web.config फ़ाइल में परिभाषित कस्टम त्रुटियों, उदा से चलाता है

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> 
    <error statusCode="401" redirect="AuthFailed.htm" /> 
    <error statusCode="403" redirect="NoAccess.htm" /> 
    <error statusCode="404" redirect="FileNotFound.htm" /> 
</customErrors> 

एक नया अपवाद फेंकने से निश्चित रूप से कस्टम त्रुटियां ट्रिगर होती हैं।

इसके अलावा, आप ELMAH या कुछ जैसे अनुप्रयोग-व्यापी त्रुटि लॉगिंग सुविधा का उपयोग कर रहे हैं, और मुझे नहीं लगता कि Response.StatusCode विधि वहां लॉग भी होगी।

नोट: अब मुझे सवाल है कि, आदर्श आदर्श आईआईएस त्रुटि पृष्ठ दिखाया जाना चाहिए। जाहिर है, कस्टम त्रुटि पेज नहीं चाहते थे। मैं उस मामले में Response.StatusCode विधि का उपयोग करूंगा।

+0

अरे यह कमाल है! बस मुझे क्या पता होना चाहिए! –

9

एक अतिरिक्त टिप्पणी।

यदि पृष्ठ का एक हिस्सा आउटपुट बफर में पहले ही लिखा जा चुका है तो यह महत्वपूर्ण है कि आप किसी भी buffered सामग्री को साफ़ करें या पृष्ठ सही ढंग से दिखाई नहीं दे रहा है।

यह एक टेम्पलेट वातावरण में काफी संभावना है। जैसे मास्टर पृष्ठों ...

Response.ClearContent(); 
Response.StatusCode = 401; 
Response.End(); 
संबंधित मुद्दे