7

Tôi đã tìm kiếm một số phương pháp để sử dụng ELMaH với ASP.Net MVC để tôi có thể sử dụng trang lỗi tùy chỉnh cho tất cả các ngoại lệ bao gồm cả 404.Phương pháp này có sử dụng ELMaH với mùi MVC không?

no shortage của questionsasking cách tải /Shared/Error.aspx hoạt động chính xác trong ASP.Net MVC - có hoặc không có ELMaH. Tôi đã không có vấn đề với nhiệm vụ đó, nhưng tôi cảm thấy rằng giải pháp của tôi khi sử dụng trang 404 tùy chỉnh cùng với ELMaH quá đơn giản và tôi không thể lắc được cảm giác rằng sẽ có nhiều thứ hơn.

Sau khi kích hoạt customErrors trong Web.Config, tôi đã tạo ra một hành động mới trong HomeController tôi:

public ActionResult PageNotFound() 
{ 
    return null; 
} 

Từ đó tôi đã thêm một phương pháp mới trong tập tin Global.asax của tôi để tận dụng khả năng lọc log ELMAH và , sau khi để cho ngoại lệ xuyên bị thoát ra, chuyển hướng các phản ứng trở lại nói trên PageNotFound ActionResult:

public void errorLog_Filtering(object sender, ExceptionFilterEventArgs e) 
    { 
     if (e.Exception.GetType().Equals(typeof(HttpException))) 
     { 
      HttpException ex = (HttpException)e.Exception; 
      if (ex.GetHttpCode() == 404) 
       Response.Redirect("/Home/PageNotFound"); 
     } 
    } 

tôi nhìn ra một cái gì đó mà đi kèm với MVC theo mặc định (vì tôi vẫn đang tìm kiếm con đường của tôi đối với nhiều t hings liên quan đến MVC), hoặc overthinking vấn đề mà một giải pháp đơn giản tồn tại? Đánh giá cao bất kỳ đầu vào nào.

+0

Không có cái nhìn thực tế để trở lại. Tôi chỉ cho phép người dùng truy cập vào trang /Shared/Error.aspx mặc định. –

Trả lời

2

Tôi chắc chắn rằng ASP.NET có thể xử lý các loại công cụ cho bạn, bạn không nhất thiết phải gọi bất cứ điều gì để chuyển hướng đến hành động 404 của bạn bên trong global.asax của bạn. Xem ví dụ bên dưới.

<configuration> 
    <system.web> 
     <customErrors mode="On"> 
      <error statusCode="404" redirect="/servererrors/404.aspx" /> 
     </customErrors> 
    </system.web> 
</configuration> 

http://www.xefteri.com/articles/show.cfm?id=11

+1

Ok. Trước hết, bài viết mà bạn đã liên kết đã được viết vào năm 2002 (!) Cho một đối tượng mục tiêu của các nhà phát triển biểu mẫu web .Net 1.1. Tuy nhiên, câu trả lời của bạn đã khiến tôi nhìn lại cách tiếp cận của mình một lần nữa và, như tôi nghi ngờ, tôi đã chế tạo ra nhiều thứ. Tôi không cần sự kiện errorLog_Filtering trong Global.asax, nhưng tôi * cần * cần một ActionResult có thể truy cập. Cảm ơn các đầu vào. –

+0

Xin lỗi, bài viết này khá cũ nhưng khía cạnh cấu hình của nó vẫn khá liên quan. Little đã thay đổi khi nói đến cấu hình asp.net. –

Các vấn đề liên quan