2012-12-18 17 views
5

में छवियों के लिए लॉगिंग त्रुटियों को अनदेखा कैसे करें मेरे पास मेरे वैश्विक.एक्सएक्स में एक त्रुटि हैंडलर है;ग्लोबल एएसएक्स

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
     ' Code that runs when an unhandled error occurs 
     Dim ex = Server.GetLastError.GetBaseException 
     Dim lastErrorWrapper As HttpException = Server.GetLastError() 
     Dim lastError As Exception = lastErrorWrapper 

     If lastErrorWrapper.InnerException IsNot Nothing Then 
      lastError = lastErrorWrapper.InnerException 
     End If 

     My.ErrorHandler.LogError(_ 
      "<BR/><BR/>URL: " & Request.RawUrl & _ 
      "<BR/><BR/>STACK: " & ex.StackTrace & _ 
      "<BR/><BR/>SOURCE: " & ex.Source & _ 
      "<BR/><BR/>MESSAGE: " & ex.Message & _ 
      "<BR/><BR/>TYPENAME: " & ex.GetType.ToString & _ 
      "<BR/><BR/>INNER EXCEPTION: " & lastError.ToString & _ 
      "<BR/><BR/>REFERRER: " & HttpContext.Current.Request.Url.AbsoluteUri & _ 
      "<BR/><BR/>USER IP: " & Request.ServerVariables("REMOTE_ADDR") & " -- " & Request.ServerVariables("HTTP_USER_AGENT")) 
    End Sub 

जाहिर है, यह बहुत अच्छा काम करता है और जब भी कोई त्रुटि होती है तो मुझे ईमेल भेजता है। लेकिन, यह किसी भी छवियों के लिए भी सच है जो फ़ाइल सिस्टम में नहीं मिला है। यह मुझे एक "फाइल मौजूद नहीं है।" त्रुटि। डिस्क पर स्थित छवियों के लिए लॉगिंग त्रुटियों को अनदेखा करने का कोई तरीका है?

+1

नहीं वास्तव में एक जवाब है, क्योंकि यह अपने वर्तमान समाधान से एक बड़ी विचलन है, लेकिन [ELMAH (त्रुटि लॉगिंग मॉड्यूल और हैंडलर)] के साथ (http://code.google.com/p/elmah /) आप त्रुटि लॉगिंग के इस और कई अन्य पहलुओं को कॉन्फ़िगर कर सकते हैं। –

+0

@ मिचिलवोवो इस तरह से मैं इस समस्या के साथ समाप्त हुआ। NuGet के साथ ELMAH डाउनलोड करना और इसे केवल 10 सेकंड में सेट करना काफी आसान था। –

उत्तर

1

मुझे पता है कि यह बहुत आसान है, या बहुत सरल लगता है, या आप त्रुटि कोड के लिए खोज कर सकते हैं, लेकिन यह मैं क्या कर रहा है - सरल जांच करता है, तो त्रुटि dose not exist का संदेश है:

lastErrorWrapper.ToString().Contains("does not exist.") 
+0

मुझे वास्तव में एक ही समस्या है। क्या संसाधन गायब होने का कोई तरीका है (मौजूद नहीं है)? कभी-कभी ऐसे पृष्ठ जो मौजूद नहीं हैं उन्हें मुझे ई-मेल करने की आवश्यकता है ताकि एक जांच हो सके। – cbillowes

+0

@kleinkie मैं पूरी त्रुटि लॉग इन करता हूं और उन्हें चेक करता हूं। मेरा सुझाव है कि आप इसे लॉग इन करें और इसे ईमेल न करें, क्योंकि अगर कोई भी किसी भी कारण से कई गैर मौजूदा पृष्ठों को लोड करने का प्रयास करना शुरू कर देता है, तो आप ईमेल से भरे रहेंगे। मेरे सर्वर में मेरे पास इस सप्ताह का सौ हिस्सा है जिसमें प्रत्येक सप्ताह "अस्तित्व में नहीं है"। – Aristos

+0

धन्यवाद, मैं यही करता हूं, मैं कभी-कभी त्रुटियों की जांच करना भूल जाता हूं। मैं सिर्फ एक साधारण दैनिक रिपोर्ट लिखूंगा जो स्वचालित रूप से मुझे ई-मेल किया जाएगा ताकि मैं किसी भी संदिग्ध त्रुटियों की जांच कर सकूं। =) – cbillowes

5

क्या आप इसके बजाय FileNotFoundException को हल नहीं कर सकते? यदि अपवाद नहीं होना चाहिए तो इसे दबाने से समस्या को हल करें। ज्ञात अपवाद को संभालने के लिए आप निम्न कोड का उपयोग कर सकते हैं।

if(Server.GetLastError().GetBaseException() is System.Web.HttpException) 
{ 
    //You could check whether the 
    //Server.GetLastError().GetBaseException().Message contains the appropriate message 
    Debug.WriteLine("Suppressed FileNotFoundException"); 
}else 
//Log an unhandled exception 
2
var ex = Context.Error; 

if (ex is HttpException) 
{ 
    var httpException = (HttpException)ex; 

    if (httpException.GetHttpCode() == (int)HttpStatusCode.NotFound) 
     return; // Do nothing 404  
} 
संबंधित मुद्दे