Làm cách nào để xử lý chính xác các ngoại lệ được ném từ bộ điều khiển trong ASP.NET MVC? Thuộc tính HandleError
dường như chỉ xử lý các ngoại lệ được ném bởi cơ sở hạ tầng MVC và không ngoại lệ được ném bởi mã của riêng tôi.Xử lý lỗi trong ASP.NET MVC
Sử dụng web.config
<customErrors mode="On">
<error statusCode="401" redirect="/Errors/Http401" />
</customErrors>
này với đoạn mã sau
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
// Force a 401 exception for testing
throw new HttpException(401, "Unauthorized");
}
}
}
không dẫn đến những gì tôi đã hy vọng. Thay vào đó tôi nhận được trang ASP.NET lỗi chung nói với tôi để sửa đổi web.config của tôi để xem thông tin lỗi thực tế. Tuy nhiên, nếu thay vì ném một ngoại lệ tôi trở lại một Xem không hợp lệ, tôi nhận được trang /Shared/Views/Error.aspx:
return View("DoesNotExist");
Ném ngoại lệ trong một bộ điều khiển giống như tôi đã làm ở trên có vẻ để vượt qua tất cả chức năng HandleError
, vậy cách nào đúng để tạo các trang lỗi và làm thế nào để tôi chơi tốt với cơ sở hạ tầng MVC?
Tôi sẽ đề nghị bạn kiểm tra nguồn của http://kigg.codeplex.com nơi bạn sẽ tìm thấy mã nguồn hoàn chỉnh của httpModule này, tôi chỉ muốn lộn xộn global.asax đó là lý do tại sao HttpModule. – kazimanzurrashid