मुझे त्रुटि का मान कैसे प्राप्त करें मैड प्रॉपर्टी <system.webServer><httpErrors>
तत्व में web.config में सेट करें?httpErrors त्रुटि मोड प्रोग्रामेटिक रूप से
मैं एएसपी.नेट वेब एप्लिकेशन में कुछ "आत्म-निदान" को लागू करने की कोशिश कर रहा हूं। जब ऐप शुरू होता है, तो यह web.config में कुछ सेटिंग्स के माध्यम से चलता है और पुष्टि करता है कि वे सही तरीके से सेट हैं।
इस कोड को काफी अच्छी तरह से काम करता है जब ErrorMode <system.web><customErrors>
तत्व में सेट है,
var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.web/customErrors");
Response.Write(errSec.Mode.ToString());
एक बार साइट IIS7 पर आ जाता है और इस सेटिंग को अब system.webServer -> httpErrors
में पाया जाता है यह काम नहीं करेगा।
यह काम नहीं करेगा:
var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.webServer/httpErrors");
और एक CustomErrorsSection
पर कास्ट करना भी एक बुरा विचार की तरह लगता है, वहाँ का उपयोग करने के लिए एक बेहतर प्रकार होना चाहिए?
मुझे यह आलेख IIS.NET, HTTP Errors पर मिला, लेकिन मुझे माइक्रोसॉफ्ट.एब.एडमिनिस्ट्रेशन लाइब्रेरी पर निर्भरता के बिना ऐसा करने की उम्मीद है।
कोई सुझाव ??
अद्यतन
ठीक है, नीचे दिए गए सुझाव के आधार पर, मैं इस कोशिश की:
var errSec = (ConfigurationSection)HttpContext.Current.GetSection("system.webServer/httpErrors");
Response.Write(errSec.SectionInformation.GetRawXml().ToString());
लेकिन है कि या तो काम नहीं करता, errSec
वस्तु रिक्त है। और एक साइड-नोट पर, यदि मैं उसी दृष्टिकोण का उपयोग करके <system.web><customErrors>
अनुभाग लोड करता हूं, तो GetRawXml()
विधि कॉल "यह ऑपरेशन रनटाइम पर लागू नहीं होता है" के साथ विफल रहता है। अपवाद संदेश
मुझे पता है कि पूरे web.config को एक XML फ़ाइल के रूप में कैसे लोड किया जाए और क्वेरी की आवश्यकता है कि मुझे आवश्यक तत्व प्राप्त करने के लिए। लेकिन ऐसा लगता है कि एक और अधिक सुरुचिपूर्ण दृष्टिकोण होना चाहिए।
कैसे एक्सएमएल के रूप में web.config को पढ़ने के लिए:
var conf = XDocument.Load(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "web.config");
var errMode = conf.Root.Element("system.webServer").Element("httpErrors").Attribute("errorMode").Value;
... लेकिन है कि बस बुरा है! और अगर त्रुटि मोड सेटिंग machine.config या इसी तरह से सेट है, तो यह काम नहीं करेगा।
आप हमेशा प्रतिबिंब का उपयोग कर सकते हैं ;-) – Steven
हाँ, मैं "एक्सएमएल के रूप में पढ़ना" दृष्टिकोण का उल्लेख करना भूल गया क्योंकि एक और विकल्प जिसे मैं टालना चाहता हूं। :) मैं इसे कॉन्फ़िगरेशनसेक्शन के रूप में लोड करने का प्रयास कर रहा था, लेकिन मुझे यह पता नहीं लगा सका कि त्रुटि कैसे प्राप्त करें। कोई विचार? –