2011-01-06 14 views
6

मेरी एमवीसी वेब प्रोजेक्ट में। मैं web.config में "custromerrors" तत्व का उपयोग किए बिना अपने आगंतुकों को कस्टम त्रुटि पृष्ठ दिखाने की कोशिश कर रहा हूं।Elmah अपवाद लॉगिंग नहीं

मैं की तरह

protected void Application_Error(object sender, EventArgs e) 
{ 

    Exception exception = Server.GetLastError(); 

    bool success = RaiseErrorSignal(exception); 

    Response.Clear(); 

    HttpException httpException = exception as HttpException; 

    RouteData routeData = new RouteData(); 
    routeData.Values.Add("controller", "Error"); 

    if (httpException == null) 
    { 
     routeData.Values.Add("action", "Index"); 
    } 
    else //It's an Http Exception, Let's handle it. 
    { 
     switch (httpException.GetHttpCode()) 
     { 
      case 404: 
       // Page not found. 
       routeData.Values.Add("action", "Error404"); 
       break; 
      case 500: 
       // Server error. 
       routeData.Values.Add("action", "Error500"); 
       break; 

      // Here you can handle Views to other error codes. 
      // I choose a General error template 
      default: 
       routeData.Values.Add("action", "Index"); 
       break; 
     } 
    } 

    // Pass exception details to the target error View. 
    routeData.Values.Add("error", exception); 

    // Clear the error on server. 
    Server.ClearError(); 

    // Call target Controller and pass the routeData. 
    IController errorController = new ProjectName.WebSite.Controllers.ErrorController(); 
    errorController.Execute(new RequestContext(
     new HttpContextWrapper(Context), routeData)); 


} 

private static bool RaiseErrorSignal(Exception e) 
{ 
    var context = HttpContext.Current; 
    if (context == null) 
     return false; 
    var signal = ErrorSignal.FromContext(context); 
    if (signal == null) 
     return false; 
    signal.Raise(e, context); 
    return true; 
} 

नीचे लेकिन Elmah नहीं कर सकते लॉग त्रुटियों भी मैं त्रुटि संकेत को ऊपर उठाने रहा अपवाद पकड़ कर सकते हैं।

+2

तो, आपका प्रश्न क्या है? मैं देखता हूं कि एक निष्कर्ष है। –

+0

सिग्नल .राइस (ई, संदर्भ) काम नहीं करता है क्योंकि जब मैं अपवाद देखने के लिए /elmah.axd पर जाता हूं, तो सूची खाली होती है। – Yucel

उत्तर

9

मुझे समस्या मिली, मुझे एक web.config खंड याद आया। मैंने <system.webserver><modules> पर "त्रुटि लॉग" मॉड्यूल जोड़ा।

मुझे इसे <system.web><httpModules> पर जोड़ने की भी आवश्यकता है।

जोड़ने के बाद, एल्मा त्रुटियों को लॉग करना शुरू कर देता है।

इसके अलावा मुझे ErrorSignal.Raise() विधि को कॉल करने की आवश्यकता नहीं है, Elmah सिग्नल किए बिना त्रुटियों का पता लगा सकता है।

+4

एक और नोट: मेरे मामले में यह App_Data फ़ोल्डर की गलत लेखन अनुमतियां थी – devqon

संबंधित मुद्दे