我發現了另一個問題發佈在這裏提供了我的問題的第一部分的解決方案,即如何生成ASP.NET MVC中的404頁面沒有重定向到另一個頁面(所以最初請求的url保留在地址欄中)。在使用IOCControllerFactory時拋出404像StackOverflow的,沒有重定向
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));
}
}
事物的404方工作正常,我如果我不使用IOCControllerFactory,但只要我做使用一個工廠,在global.asax
錯誤代碼是不二手而是我得到以下錯誤:
The IControllerFactory 'MyNamespace.IOCControllerFactory' did not return a controller for the name 'blah'.
如何解決這個問題,而不是訴諸擺脫我的ControllerFactory的,並創建一個參數的構造函數用於我的每一個對照品ollers?
見[此篇](http://stackoverflow.com/questions/619895/how-can-i-properly-handle-404-in-asp-net-mvc/7967759#7967759),其是使用ASP.Net MVC篩選器屬性的自定義404錯誤頁面解決方案的示例。該解決方案還避免了302/200消息到瀏覽器。瀏覽器得到一個404響應。 –