protected void Application_Error(object sender, EventArgs args) { try { var exception = Server.GetLastError(); var request = new HttpRequestWrapper(HttpContext.Current.Request); var isAjax = request.IsAjaxRequest(); var httpException = exception as HttpException; if (httpException != null) { if (httpException.GetHttpCode() == 404) { if (!isAjax) { using (var controller = new HomeController()) { var controllerContext = new ControllerContext(HttpContext.Current.Request.RequestContext, controller); var result = new ViewResult { ViewName = "~/Views/Errors/Error404.cshtml" }; result.ExecuteResult(controllerContext); HttpContext.Current.Response.End(); } return; } } } if (isAjax && request.IsSmartBlocksRequest()) { HandleException(exception); using (var controller = new HomeController()) { var controllerContext = new ControllerContext(HttpContext.Current.Request.RequestContext, controller); var result = controller.GetErrorJsonResponse(exception); result.ExecuteResult(controllerContext); HttpContext.Current.Response.End(); } return; } HandleException(exception); using (var controller = new HomeController()) { var controllerContext = new ControllerContext(HttpContext.Current.Request.RequestContext, controller); var result = new ViewResult { ViewName = "~/Views/Errors/Error.cshtml", ViewData = { Model = new ErrorModel() { Exception = exception, IsAjax = isAjax } } }; result.ExecuteResult(controllerContext); HttpContext.Current.Response.End(); } } catch (Exception exception) { LogManager.GetCurrentClassLogger().Fatal(exception); } }