asp.net mvc 3はグローバルエラー処理Web.com figにCustoomErrを設定します。
7123 ワード
抜粋:http://www.myexception.cn/web/1130191.html
asp.net mvc 3 Web.config CustomError
Web.config CustomError
CustomError , :
<system.web>
<!--<customErrors mode="RemoteOnly" defaultRedirect="~/error.html"/>-->
<customErrors mode="On" defaultRedirect="~/error.html"/>
<!--<customErrors mode="Off" defaultRedirect="~/error.html"/>-->
</system.web>
Mode Off、On、RemoteOnly, 。
Mode :
On: 。
Off: , , ASP.NET 。
RemoteOnly: (http://localhost), , , , 。 , , , 。
:
HandleError , CustomError, ,MVC HttpRequest ”Error” ( Controler View Shared ), 。 ,CustomError ”defaultRedirect” ”redirect” 。 : Error , ”defaultRedirect” ”redirect” 。
HandleError, CustomError, , ”defaultRedirect” ”redirect” url, /Error/
Unknown
:ASP.N.NET MVC3 , Controller HandleError, Controller HandleError。 ,HandleError action controller 。
Global.cs RegisterGlobalFilters , web.config
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
}
web.config CustomError , , :
<customErrors mode="On" defaultRedirect="Custom404.htm">
</customErrors>
: web , 。
:
1、 Controller OnException
, , Controller OnException 。 MVC Controller , BaseController, OnExcetion , Controller BaseController 。 :
public class BaseController : Controller
{
protected override void OnException(ExceptionContext filterContext)
{
// , , 。
// filterContext.Exception 。
string filePath = @"D:\Temp\Exceptions.txt";
StreamWriter sw = System.IO.File.AppendText(filePath);
sw.Write(filterContext.Exception.Message);
sw.Close();
// OnException
base.OnException(filterContext);
}
}
BaseController Controller 。
2、 FilterAttribute
FilterAttribute, , Action , Controller Action 。
Filter :
public class LogExceptionFilterAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
//
}
}
Controller Action, Global.asax.cs :
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new LogExceptionFilterAttribute());
filters.Add(new HandleErrorAttribute());
}
Controller Action :
[LogExceptionFilter()]
public ActionResult About()
{
throw new Exception(" .");
}