2016-04-19 10 views
0

私はWeb.configファイルのような通路を持っています。スタックトレースと内部例外を含むデフォルトのもの、の場合のように、私は、自動的に提供されるメッセージを持ってしたいことを除いてすることになって継承のないカスタムエラーページにエラーメッセージを表示するにはどうすればよいですか?

<system.webServer> 
    ... 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
    <clear /> 
    <error statusCode="404" path="/Home/Err/404?message=Not found" responseMode="Redirect" /> 
    <error statusCode="500" path="/Home/Err/500?message=Total poof" responseMode="Redirect" /> 
</httpErrors> 
</system.webServer> 

これは動作します。

私はエラーを傍受しないで、むしろデフォルトフィルタでそれを私のために処理させます。 inheriting HandleErrorAttributeより簡単な方法はありますか?

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new HandleErrorAttribute()); 
    ... 
} 
+0

global_asaxでApplication_Errorを使用できます –

答えて

1

例外は様々な層から来ることができると私は正しいエラーページに例外とルートをログに記録する必要があるので、私はのglobal.asaxで例外を扱ってきました。

void Application_Error(Object sender, EventArgs e) 
    { 
     var exception = Server.GetLastError(); 
     AppEventSource.Log.Error(HttpContext.Current.Request.RawUrl, GetUserName(HttpContext.Current.User), exception.Message, HttpContext.Current.Request.UserHostAddress); 
     Server.ClearError(); 

     if (exception is UnauthorizedAccessException) 
     { 
      Response.Redirect("~/Error/401"); 
     } 
     else { 
      //generic error 
      Response.Redirect("~/Error"); 
     } 
    } 
関連する問題