私はASP.NET MVC3にまったく新しいものです。 MVC3のグローバルカスタムエラーページを作成するにはどうすればよいですか?一般的な考え方は、例外がスローされたときにユーザーに一般的なメッセージが表示され、開発者が後で調査するために例外をデータベースに記録するというものです。ASP.NET MVC3のグローバルカスタムエラーページを作成するにはどうすればよいですか?
ご協力いただきありがとうございます。 Maess'はコメントにフォローアップ
protected void Application_Error() {
HttpContext ctx = HttpContext.Current;
var error = ctx.Server.GetLastError();
ctx.Response.Clear();
ctx.Response.End();
}
:あなたのGlobal.asax
ファイルで
protected void Application_Error()
{
var exception = Server.GetLastError();
Log.Error("Exception", exception);
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Error";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
Response.StatusCode = 500;
if (httpException != null)
{
Response.StatusCode = httpException.GetHttpCode();
switch (Response.StatusCode)
{
case 403:
routeData.Values["action"] = "Http403";
break;
case 404:
routeData.Values["action"] = "Http404";
break;
}
}
IController errorsController = new ErrorController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
良い点として、ビュー内のどこにでも例外にアクセスすることができ、それが唯一のunhanded例外またはHTTPエラーを処理しようとしている404のように、500など – Maess
@Maess:私はいくつかの特定の情報を追加しました – Ropstah