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("  .");
}