साथ प्रवेश न होने पर मुझे लगता है कि " '/ MySiteDev' आवेदन में सर्वर त्रुटि" त्रुटि निश्चित समयत्रुटि Application_Error
निम्नलिखित थ्रो एक
Asp.Net 4.0 Web Forms
आवेदन किया है।
यह त्रुटि केवल कभी-कभी होती है। और यह त्रुटि Application_Error
ईवेंट को फायर नहीं कर रही है जिसे Global.asax
में संभाला जाता है।
चूंकि यह एप्लिकेशन_इरर को फायर नहीं कर रहा है, तो अन्य सभी संभावित स्थान क्या हैं जिनके पास इस त्रुटि ईवेंट का लॉग होगा? घटना दर्शक के अलावा कुछ भी उपलब्ध है?
एएसपी.Net ढांचे द्वारा किए गए अपवादों को जानने का कोई तरीका?
नोट: customErrors mode="Off"
। इसके अलावा runAllManagedModulesForAllRequests="true"
अद्यतन
How to: Handle Application-Level Errors
कोई त्रुटि हैंडलर कि Global.asax फ़ाइल में परिभाषित किया गया है केवल त्रुटियों कि ASP.NET क्रम के अनुसार अनुरोधों की प्रोसेसिंग के दौरान हो पकड़ेगा से संदर्भ । उदाहरण के लिए, यदि उपयोगकर्ता किसी .aspx फ़ाइल का अनुरोध करता है जो आपके एप्लिकेशन में नहीं होता है तो यह त्रुटि को पकड़ लेगा। हालांकि, यदि कोई उपयोगकर्ता किसी भी nonxistent .htm फ़ाइल का अनुरोध करता है तो यह त्रुटि को नहीं पकड़ता है। गैर-ASP.NET त्रुटियों के लिए, आप इंटरनेट इनफॉर्मेशन सर्विसेज (आईआईएस) में एक कस्टम हैंडलर बना सकते हैं। कस्टम हैंडलर को सर्वर-स्तरीय त्रुटियों के लिए भी नहीं बुलाया जाएगा।
आप Global.asax फ़ाइल से अनुरोधों के लिए सीधे त्रुटि जानकारी आउटपुट नहीं कर सकते हैं; आपको दूसरे पृष्ठ पर नियंत्रण स्थानांतरित करना होगा, आमतौर पर एक वेब फॉर्म पेज। किसी अन्य पृष्ठ पर नियंत्रण स्थानांतरित करते समय, स्थानांतरण विधि का उपयोग करें। यह वर्तमान संदर्भ को संरक्षित करता है ताकि आप GetLastError विधि से त्रुटि जानकारी प्राप्त कर सकें।
त्रुटि को संभालने के बाद, आपको सर्वर ऑब्जेक्ट (HttpServerUtility क्लास) की ClearError विधि को कॉल करके इसे साफ़ करना होगा।
कोड
protected void Application_Error(object sender, EventArgs e)
{
//Get the exception object
Exception exception = Server.GetLastError().GetBaseException();
//Get the location of the exception
string location = Request.Url.ToString();
if (!String.IsNullOrEmpty(location))
{
string[] partsOfLocation = location.Split('/');
if (partsOfLocation != null)
{
if (partsOfLocation.Length > 0)
{
location = partsOfLocation[partsOfLocation.Length - 1];
}
}
//Maximum allowed length for location is 255
if (location.Length > 255)
{
location = location.Substring(0, 254);
}
}
string connectionString = ConfigurationManager.ConnectionStrings[UIConstants.PayrollSQLConnection].ConnectionString;
ExceptionBL exceptionBL = new ExceptionBL(connectionString);
exceptionBL.SubmitException(exception.Message, location);
Log.Logger.Error(exception.Message);
}
कॉन्फ़िग
<system.web>
<compilation debug="true" targetFramework="4.0" />
<pages validateRequest="false"></pages>
<httpRuntime requestValidationMode="2.0" />
<customErrors mode="Off"/>
<authentication mode="Windows"></authentication>
<identity impersonate="true" userName="domain\xxxx" password="xxxx"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<httpErrors errorMode="Detailed" />
</system.webServer>
अद्यतन संदर्भ
- Application_Error not firing
- Global.asax event Application_Error is not firing
- Application_Error does not fire?
- How to: Handle Application-Level Errors
इसे फिर से तैनात करें! इसके अलावा, StackOverflowException हो सकता है ... मुझे ईवेंट लॉग से ओपी विवरण देखने में दिलचस्पी होगी। – MikeSmithDev
@MikeSmithDev निम्नलिखित आलेख कहता है, "यह एक" स्टैक ओवरफ्लो "अपवाद हो या" 404 नहीं मिला "यह एप्लिकेशन_इरर में समाप्त हो जाएगा।" क्या आप कह रहे हैं कि यह कथन गलत है? 'StackOverflow अपवाद' को एप्लिकेशन_इरर द्वारा पकड़ा नहीं जाएगा? http://totaldotnet.com/Article/ShowArticle58_GlobleErrorHandle.aspx – Lijo
@ लिजो हाँ मैं यही कह रहा हूं। मैंने अभी आपके कोड का परीक्षण किया है। यह एक नियमित अपवाद पकड़ा। जब मैंने स्टैक ओवरफ्लो एक्सेप्शन किया तो यह इसे पकड़ नहीं पाया। कोशिश करें/पकड़ उन्हें पकड़ नहीं सकते हैं। इसी प्रक्रिया को तुरंत समाप्त कर दिया गया है। यदि यह बहुत अधिक होता है, तो अक्सर, ऐप_पूल बंद हो जाएगा और जब तक आप इसे रीसायकल नहीं करेंगे तब तक आपकी साइट मूल रूप से मर जाएगी। – MikeSmithDev