2011-04-29 20 views
8

आईआईएस 7 (एकीकृत मोड) में त्रुटि के प्रतिपादन पर पूर्ण प्रोग्रामेटिक नियंत्रण प्राप्त करने की कोशिश करने से मुझे कट्टर सिर दर्द हो रहा है। मैं जो करना चाहता हूं उसे एक त्रुटि दी गई है (पृष्ठ नहीं मिला, आंतरिक सर्वर त्रुटि, प्रमाणीकृत नहीं है, आदि), पूरे अनुरोध को एक कस्टम एएसपीएक्स या एचटीएमएल (मैं बाद वाले को पसंद करता हूं) सही HTTP स्थिति कोड के साथ स्थानांतरित करता हूं।आईआईएस 7 और HTTP स्टेटस कोड हैंडलिंग

मैं जो चाहता हूं वह आईआईएस 7 है जो मैंने HTTP स्टेटस कोड सेट करने के बारे में बकवास नहीं दिया है। मैं इसकी त्रुटि संभाल नहीं चाहता। जब मैं Response.StatusCode = (int)HttpStatusCode.NotFound सेट करता हूं, तो मैं चाहता हूं कि आईआईएस अपने स्वयं के त्रुटि पृष्ठ को प्रस्तुत न करे, लेकिन शायद अनुरोध को किसी अन्य फ़ाइल में स्थानांतरित कर दें।

मैं काम करने के लिए इस स्थैतिक विन्यास सामान मिल गया है:

<configuration> 
    <system.webServer> 
    <httpErrors> 
     <clear /> 
     <error statusCode="404" path="/errors/404.html" responseMode="ExecuteURL" /> 
    </httpErrors> 
    </system.webServer> 
</configuration> 

हालांकि यह काम करता है, यह मुझे क्या प्रतिक्रिया से कोई लेना देना, एक त्रुटि परिदृश्य को देखते हुए पर प्रोग्राम संबंधी नियंत्रण नहीं देता है। कॉन्फ़िगरेशन एक अच्छा फॉलबैक है, लेकिन मैं वास्तव में Response.StatusCode सेट करने में सक्षम होना चाहता हूं और कुछ परिस्थितियों में कॉन्फ़िगर किए गए 404.html से कुछ अलग प्रस्तुत करना चाहता हूं (जैसे कि हमें Accept: application/json प्राप्त होता है), लेकिन आईआईएस 7 मुझे नहीं जाने देगा। कोई मौका नहीं।

तो मुझे क्या करना है? मैंने HttpResponse.TrySkipIisCustomErrors Property सेट करने का प्रयास किया है, लेकिन यह एक विशाल हैक जैसा दिखता है और लगातार काम नहीं करता है। क्या इस संपत्ति को सचमुच सही व्यवहार करने के लिए मैं जिस व्यवहार को चाहता हूं उसे प्राप्त करने के लिए सेट कर रहा हूं?

फिलहाल, मुझे जिस भावना के साथ छोड़ा गया है वह आईआईएस 7 की ओर घनिष्ठ नफरत है। क्या कोई मुझे यह साबित करके इसका समाधान करने में मदद कर सकता है कि मैं सिर्फ बेवकूफ हूं और मैं वास्तव में HTTP स्टैक पर पूर्ण नियंत्रण रख सकता हूं?

+0

आप की कोशिश की है एक HTTP हैंडलर का उपयोग कर एक स्थिर HTML पृष्ठ के बजाय की ज़रूरत है? – sanpaco

उत्तर