,你可以通過在Global.asax中註冊Application_Error事件做,然後將其重定向到這樣的數據錯誤控制器或者你可以執行要根據錯誤代碼
protected void Application_Error()
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Error";
routeData.Values["action"] = "oops";
routeData.Values["exception"] = exception;
Response.StatusCode = 500;
if (httpException != null)
{
Response.StatusCode = httpException.GetHttpCode();
switch (Response.StatusCode)
{
case 403:
routeData.Values["action"] = "NoAccess";
break;
case 404:
routeData.Values["action"] = "NotFound";
break;
}
}
IController errorsController = new ErrorController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
然後什麼都起作用讓用行動哎呀/ NotAccess/NOTFOUND像
public ActionResult oops(Exception exception)
{
//return Content("General failure", "text/plain");
// return View();
}
public ActionResult NotFound()
{
// return Content("Not found", "text/plain");
// return View("oops");
}
public ActionResult NoAccess()
{
//return Content("Forbidden", "text/plain");
//return View("oops");
}
以及適當的信息返回自己的看法
在控制器方法中捕捉異常?如果你自己處理異常,它不應該傳播到錯誤控制器。 –
好的,但是,爲什麼它會嘗試重定向到我的主文件夾下的錯誤視圖 - 它應該在錯誤視圖文件夾中查找它?謝謝! – user1368182
你想要哪一個...根本沒有錯誤重定向,或者讓它重定向到正確的位置?爲了讓事情更清楚,我會將「重定向到錯誤的地方」作爲一個單獨的問題發佈,並添加一些細節。 –