Tôi đã tìm thấy một câu hỏi khác được đăng trên đây cung cấp giải pháp cho phần đầu tiên của câu hỏi của tôi, tức là cách tạo trang 404 trong ASP.NET MVC WITHOUT chuyển hướng đến một trang khác (vì vậy url được yêu cầu ban đầu vẫn còn trong thanh địa chỉ).Ném 404 giống như StackOverflow, không có chuyển hướng, khi sử dụng IOCControllerFactory
ASP.NET MVC - How to throw a 404 page similar to that on StackOverflow
protected void Application_Error(object sender, EventArgs e)
{
var exception = Server.GetLastError();
Response.Clear();
var httpException = exception as HttpException;
var routeData = new RouteData();
routeData.Values.Add("controller", "Error");
if (httpException != null)
{
routeData.Values.Add("action", httpException.GetHttpCode() == 404 ? "NotFound" : "Unknown");
// clear the error, otherwise, we will always get the default error page.
Server.ClearError();
// call the controller with the route
IController errorController = new ErrorController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
}
Các 404 bên thứ hoạt động tốt đối với tôi nếu tôi không sử dụng một IOCControllerFactory, nhưng ngay sau khi tôi làm sử dụng một nhà máy, mã lỗi trong global.asax
không phải là đã sử dụng và thay vào đó tôi nhận được lỗi sau:
The IControllerFactory 'MyNamespace.IOCControllerFactory' did not return a controller for the name 'blah'.
Làm cách nào để giải quyết vấn đề này, và tạo ra một hàm tạo tham số cho mỗi contr của tôi ollers?
Xem [bài này] (http://stackoverflow.com/questions/619895/how-can-i-properly-handle-404-in-asp-net-mvc/7967759#7967759), trong đó là một ví dụ về giải pháp trang lỗi 404 tùy chỉnh sử dụng thuộc tính bộ lọc ASP.Net MVC. Giải pháp này cũng tránh được thông báo 302/200 cho trình duyệt. Trình duyệt nhận được phản hồi 404. –