protected ViewResult On404Exception(HttpException ex, int statusCode, string view) { //ex .ExceptionHandled = true; ErrorModel _error = new ErrorModel(); Response.StatusCode = statusCode; _error = AppErrorModule.ExceptionOccurred(ex, 500); ViewResult res = this.View(view, statusCode); return(res); //filterContext.Result = Result; }
protected override void OnException(ExceptionContext filterContext) { HttpException httpException = (HttpException)filterContext.Exception; int _err = httpException.GetHttpCode(); Exception exception = filterContext.Exception; filterContext.ExceptionHandled = true; ErrorModel _error = new ErrorModel(); //Response.StatusCode = 500; var routeData = new RouteData(); routeData.Values.Add("controller", "Error"); if (httpException == null) { routeData.Values.Add("action", "Error500"); } else { switch (httpException.GetHttpCode()) { // This is a forced case where ASP.NET/MVC comes through here. // 503 is an IIS Error - Service not available :: neither Asp.Net nad neither Mvc AND neither IIS are available. // However, if we invoke through .Net/MVC a throw new HttpException(503)... it should end up here. // Else, in web.config, there's a redirect to that page .HTML. case 503: var _result503 = new FilePathResult("~/Error/Pages/ServiceUnavailable.html", "text/html"); filterContext.Result = _result503; break; case 500: _error = AppErrorModule.ExceptionOccurred(exception, 500); var _result500 = this.View("~/Views/Error/Error500.cshtml", _error); //var Result = this.View("Index", new HandleErrorInfo(exception, // filterContext.RouteData.Values["controller"].ToString(), // filterContext.RouteData.Values["action"].ToString())); //var Result = this.View("Index", new HandleErrorInfo(exception, // filterContext.RouteData.Values["controller"].ToString(), // filterContext.RouteData.Values["action"].ToString())); filterContext.Result = _result500; break; } } }