public void OnException(ExceptionContext context) { //Logger.Error(context.Exception.Message); if (!(context.ActionDescriptor is ControllerActionDescriptor)) { return; } var myException = context.Exception as BaseException; if (myException == null) { context.Result = new ObjectResult( new { error = context.GetType().Name, message = context.Exception.Message, }); context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError; } else { context.Result = new ObjectResult( new { error = myException.Name, message = myException.Message }); context.HttpContext.Response.StatusCode = myException.StatusCode; } context.Exception = null; }
/// <summary> /// 记录错误日志 /// </summary> /// <param name="filterContext"></param> protected override void OnException(ExceptionContext filterContext) { ILog log = LogManager.GetLogger(filterContext.GetType()); log.Error(filterContext.Exception); base.OnException(filterContext); }
protected override void OnException(ExceptionContext filterContext) { //The "ErrorManager" in the above code is just a view that is using a //Model based on ExceptionContext filterContext.GetType(); filterContext.ExceptionHandled = true; this.View("ErrorManager", filterContext).ExecuteResult(this.ControllerContext); base.OnException(filterContext); }
public void OnException(ExceptionContext filterContext) { Debug.WriteLine(filterContext.GetType().Name); Debug.WriteLine("EXCEPTION EXCEUTED"); filterContext.ExceptionHandled = true; filterContext.Result = new ViewResult { ViewName = "../Student/Department" }; }
protected ErrorResponseViewModel CreateErrorResponseVM(ExceptionContext exceptionContext) { ErrorResponseViewModel errorVM = new ErrorResponseViewModel(); errorVM.Message = exceptionContext.Exception.Message; errorVM.Path = exceptionContext.HttpContext.Request.Path; errorVM.StackTrace = (exceptionContext.Exception.StackTrace)?.Substring(0, 500); errorVM.ExceptionName = exceptionContext.GetType().ToString(); errorVM.InnerException = exceptionContext.Exception.InnerException?.Message; return(errorVM); }
public void OnException(ExceptionContext context) { if (context.GetType() == typeof(InvalidTokenException)) { context.HttpContext.Response.StatusCode = 401; } else { context.HttpContext.Response.StatusCode = 500; } }
public override void OnException(ExceptionContext filterContext) { HttpRequestBase richiesta = filterContext.RequestContext.HttpContext.Request; if (typeof(System.Data.SqlClient.SqlException).IsAssignableFrom(filterContext.GetType()) || typeof(System.Data.DataException).IsAssignableFrom(filterContext.GetType())) { // errore di connessione al database, scrivo il log sul file Elmah.ErrorSignal.FromCurrentContext().Raise(filterContext.Exception); } else { using (DatabaseContext db = new DatabaseContext()) { db.Database.Connection.Open(); LOG_ERRORE logErrore = new LOG_ERRORE(); logErrore.ACTION = filterContext.RouteData.Values["action"].ToString(); logErrore.CONTROLLER = filterContext.RouteData.Values["controller"].ToString(); logErrore.PARAMETRI = System.Web.Helpers.Json.Encode(filterContext.HttpContext.Request.QueryString); logErrore.IP = richiesta.UserHostAddress; logErrore.MAC_ADDRESS = ""; logErrore.SESSIONE = filterContext.RequestContext.HttpContext.Session.SessionID; logErrore.RICHIESTA = richiesta.ToString(); logErrore.RISPOSTA = filterContext.HttpContext.Response.ToString(); logErrore.ALIAS = richiesta.UserHostName; if (richiesta.IsAuthenticated) { AdvancedController controller = new AdvancedController(); PersonaModel utente = filterContext.RequestContext.HttpContext.Session["utente"] as PersonaModel; int bonus = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["bonusMessaggioErrore"]); Guid portale = Guid.Parse(System.Configuration.ConfigurationManager.AppSettings["portaleweb"]); logErrore.ID_PERSONA = utente.Persona.ID; controller.AddBonus(db, filterContext.Controller.ControllerContext, utente.Persona, portale, bonus, TipoTransazione.BonusSegnalazioneErrore, App_GlobalResources.Bonus.MessageError); } db.LOG_ERRORE.Add(logErrore); db.SaveChanges(); } } base.OnException(filterContext); }
public void OnException(ExceptionContext context) { string message = context.Exception.Message; //错误信息 if (_env.IsDevelopment()) { message = context.Exception.StackTrace; //堆栈信息 } context.Result = new Microsoft.AspNetCore.Mvc.ObjectResult(message) { //Value = message, StatusCode = StatusCodes.Status500InternalServerError }; //采用log4net 进行错误日志记录 _logger.Error(string.Format("【自定义错误】:{0} \r\n【异常类型】:{1} \r\n【异常信息】:{2} \r\n【堆栈调用】:{3}", message, context.GetType().Name, context.Exception.Message, context.Exception.StackTrace)); }
void IExceptionFilter.OnException(ExceptionContext filterContext) { //为了防止数据库连接不上无法记录日志,本地也进行记录 Log = LogManager.GetLogger(filterContext.GetType()); Log.Error(filterContext.Exception.Message, filterContext.Exception); var errBll = new ErrorlogBLL(); //将错误日志插入数据库 var log = new ErrorLog(); log.ErrorMsg = WebHelper.GetErrMsg(filterContext.Exception); log.ErrorPage = filterContext.HttpContext.Request.Url.ToString(); log.OperaterId = OnlineUser.OnLineUserID; log.Time = DateTime.Now; try { errBll.Add(log); } catch (Exception ex) { Log.Error(WebHelper.GetErrMsg(ex)); } }
public void OnException(ExceptionContext context) { this._logger.LogError( eventId: new EventId(context.Exception.HResult), exception: context.Exception, message: context.Exception.Message); if (context.GetType() == typeof(LocationDomainException)) { var json = new JsonErrorResponse() { Messages = new[] { context.Exception.Message } }; context.Result = new BadRequestObjectResult(json); context.HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest; } else { var json = new JsonErrorResponse() { Messages = new[] { Resources.Exception_Unknown } }; if (this._environment.IsDevelopment()) { json.DeveloperMessage = context.Exception; } ; context.Result = new InternalServerErrorObjectResult(json); context.HttpContext.Response.StatusCode = StatusCodes.Status500InternalServerError; } context.ExceptionHandled = true; }