Tôi có thể thấy quan niệm sai lầm. Bạn muốn thực hiện các điều MVC
và redirect
cho một hành động điều khiển.
Nhưng defaultRedirect
chính nó là quy ước Web Form
và do đó bị giới hạn. Thời điểm bạn chuyển hướng đến controller khác, bạn sẽ mất HttpContext
của bạn, và do đó mất HandleErrorInfo
Object của bạn
[HandleError]
Thuộc tính của bạn đòi hỏi một View
chỉ đạo thông báo lỗi của nó đến. Theo ví dụ của bạn ở trên, tôi giả sử rằng bạn có một Thư mục Views/Error
cho số ErrorController
của mình và trong đó bạn có Chế độ xem Index
. Nếu bạn muốn lọc Bối cảnh của bạn để gửi một đối tượng HandleErrorInfo
đến quan điểm cho rằng,
Hãy thử cú pháp sau:
[HandleError(View="~/Views/Error/Index")]
Public class HomeController : Controller
Nhưng những gì về Logging?!?!?
tôi nghi ngờ ý định của bạn là hơn hơn là chỉ hiển thị đống lỗi cho người dùng. Trong thực tế, tôi nghi ngờ bạn không có ý định như vậy cả. Tôi nghi ngờ mục đích thực sự của bạn là để đăng nhập lỗi của bạn (có thể là db) và để hiển thị một số thông điệp nhạt nhẽo cho người dùng của bạn.
Điều tôi đã giải thích cho đến thời điểm này là "cách tốt nhất [cách] hiển thị ngoại lệ không được xử lý trong chế độ xem của tôi". Thuộc tính [HandleError]
là tốt cho điều đó.
Nhưng khi bạn muốn di chuyển sang bước tiếp theo (đăng nhập lỗi), bạn có một vài lựa chọn:
1) Override your base controller's On Exception method; tạo riêng của bạn Controller
kế thừa từ lớp MVC Controller nhưng ghi đè lên On Exception Method. Có thể sử dụng phương pháp này cùng với thuộc tính [HandleError]
2) Create a custom exception handler Tạo Trình xử lý ngoại lệ của riêng bạn để ghi lại lỗi. Người xử lý ngoại lệ của bạn sau đó có thể gọi Chế độ xem lựa chọn hoặc có thể hoạt động cùng với [HandleError(order=2)]
vì thuộc tính bộ lọc có thể lấy đối số đơn đặt hàng ưu tiên.
Nitin Sawant hỏi những gì một cái nhìn lỗi sẽ trông như thế nào.
@model System.Web.Mvc.HandleErrorInfo
<h2>Exception details</h2>
<p> Controller: @Model.ControllerName </p>
<p> Action: @Model.ActionName </p>
<p> Exception: @Model.Exception </p>
customError mất tất cả tham chiếu đến lỗi. –
bản sao có thể có của [Làm cách nào để xử lý các ngoại lệ không bị bắt trong ứng dụng ASP.NET MVC 3?] (Http://stackoverflow.com/questions/6596648/how-do-i-handle-uncaught-exceptions-in-an- asp-net-mvc-3-application) –
Trong khi customError chuyển hướng nó đang thực hiện một yêu cầu http mới để mất tất cả dữ liệu trả lời trước đó. Những gì bạn cần là đặt redirectMode thành ResponseRewrite để bạn không thực hiện yêu cầu mới. –