2011-01-06 5 views
6

Trong dự án web MVC của tôi. Tôi đang cố gắng hiển thị các trang lỗi tùy chỉnh cho khách truy cập của mình mà không sử dụng phần tử "custromerrors" trong web.config.Elmah không đăng nhập ngoại lệ

tôi có thể bắt ngoại lệ như dưới đây

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; 
} 

Nhưng ELMAH lỗi không thể đăng nhập cũng tôi đang nâng tín hiệu lỗi.

+2

Vì vậy, câu hỏi của bạn là gì? Tất cả những gì tôi thấy là một kết luận. –

+0

signal.Raise (e, context) không hoạt động vì khi tôi truy cập vào /elmah.axd để xem các ngoại lệ, danh sách rỗng. – Yucel

Trả lời

9

Tôi đã tìm thấy sự cố, tôi đã bỏ lỡ phần web.config. Tôi đã thêm mô-đun "ErrorLog" vào <system.webserver><modules>.

Tôi cũng cần thêm nó vào <system.web><httpModules>.

Sau khi thêm, Elmah bắt đầu ghi nhật ký lỗi.

Ngoài ra tôi không cần gọi phương thức ErrorSignal.Raise(), Elmah có thể phát hiện lỗi mà không báo hiệu.

+4

Một lưu ý khác: trong trường hợp của tôi đó là quyền ghi không chính xác của thư mục App_Data – devqon