ASP.NET MVC 3上的自定義錯(cuò)誤頁(yè)我正在開發(fā)一個(gè)MVC 3基礎(chǔ)網(wǎng)站,我正在尋找一個(gè)處理錯(cuò)誤的解決方案,并為每種錯(cuò)誤呈現(xiàn)自定義視圖。因此,假設(shè)我有一個(gè)“Error”Controller,其中他的主要操作是“Index”(泛型錯(cuò)誤頁(yè)),并且對(duì)于用戶可能出現(xiàn)的錯(cuò)誤,這個(gè)控制器還會(huì)有幾個(gè)操作,比如“Handle 500”或“HandleActionNotFound”。因此,網(wǎng)站上可能發(fā)生的每一個(gè)錯(cuò)誤都可能由這個(gè)“Error”Controller(例如:“Controller”或“Action”未找到、500、404、dbException等)處理。我使用站點(diǎn)地圖文件來(lái)定義網(wǎng)站路徑(而不是路由)。這個(gè)問(wèn)題已經(jīng)回答了,這是對(duì)Gweebz的答復(fù)。我的最后一個(gè)應(yīng)用程序錯(cuò)誤方法如下:protected void Application_Error() {
//while my project is running in debug mode
if (HttpContext.Current.IsDebuggingEnabled && WebConfigurationManager.AppSettings["EnableCustomErrorPage"].Equals("false")){
Log.Logger.Error("unhandled exception: ", Server.GetLastError());}else{
try
{
var exception = Server.GetLastError();
Log.Logger.Error("unhandled exception: ", exception);
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
catch (Exception e)
{
//if Error controller failed for same reason, we will display static HTML error page
Log.Logger.Fatal("failed to display error page, fallback to HTML error: ", e);
Response.TransmitFile("~/error.html");
}}}
ASP.NET MVC 3上的自定義錯(cuò)誤頁(yè)
胡說(shuō)叔叔
2019-07-05 10:06:48