Я использовал пользовательский обработчик ошибок.
Добавьте следующий код в Global.asax.cs :
protected void Application_Error()
{
// if the debugger is attached, do not show the custom error page
if (System.Diagnostics.Debugger.IsAttached)
{
return;
}
try
{
Exception exception = Server.GetLastError();
Response.Clear();
Server.ClearError();
RouteData routeData = new RouteData();
routeData.Values["controller"] = "MyCustomErrorController";
routeData.Values["action"] = "Index";
routeData.Values["exception"] = exception;
IController errorsController = new MyCustomErrorController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
catch (Exception ex)
{
// if an error occurs within this method, do nothing
// app will automatically show the browser's default error page
}
}
Я также добавил пользовательский код на свою страницу ошибок, чтобы показать подробности исключения, если пользователь является суперпользователем. Поэтому, если я не нахожусь в режиме отладки или на активном сайте, я могу легко увидеть подробности ошибки (если я вошел как администратор).
Чтобы лучше понять код, зайдите в Google или выполните его, используя отладчик.