Вы можете использовать решение как метку, описанную выше. Атрибут HandleError.
Еще одно решение для обнаружения ошибок - это наличие базового класса, из которого происходит класс контроллера. И внутри базового класса ovveride метод OnException, чтобы показать удобное для пользователя представление ошибок, например, в "~ / Shared / Error.aspx"
Вам также нужно указать <customErrors mode="On" >
в вашем корневом web.config для работы этого решения.
public class BaseController : Controller
{
ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public BaseController()
{
}
protected override void OnException(ExceptionContext filterContext)
{
// Log the error that occurred.
log.Fatal("Generic Error occured",filterContext.Exception);
// Output a nice error page
if (filterContext.HttpContext.IsCustomErrorEnabled)
{
filterContext.ExceptionHandled = true;
View("Error").ExecuteResult(ControllerContext);
}
}
}
Вышеупомянутое решение улавливает большинство возможных «желтых экранов ошибок смерти», которые возникают.
Для обработки других ошибок, таких как 404, я использую следующее mapRoute last в global.asax RegisterRoutes (маршруты RouteCollection)
// Show a 404 error page for anything else.
routes.MapRoute(
"Error",
"{*url}",
new { controller = "Shared", action = "Error" }
);