public void OnException(ExceptionContext filterContext) { var logger = NLog.LogManager.GetLogger(HttpUtility.UrlDecode(filterContext.HttpContext.Request.Url.PathAndQuery, Encoding.UTF8)); try { var errorMsg = ExceptionUtil.GetStackMessage(filterContext.Exception); logger.Error(errorMsg); var model = new ExceptionLog { Path = HttpUtility.UrlDecode(filterContext.HttpContext.Request.Url.AbsolutePath, Encoding.UTF8), InputParameter = HttpUtil.GetInputPara(), Message = errorMsg, StackTrace = filterContext.Exception.StackTrace, ClientIP = HttpUtil.RequestHostAddress, CreatedAt = DateTime.Now }; LogService.AddExceptionLog(model); if (filterContext.HttpContext.Request.HttpMethod == "POST") { filterContext.ExceptionHandled = true; filterContext.Result = new NewtonsoftJsonResult() { Data = new BaseOutput { msg = errorMsg }, IncludeNotValid = true }; } } catch (Exception e) { logger.Fatal(ExceptionUtil.GetStackMessage(e)); } }
/// <summary> /// Hata mesajını db'ye yazdıktan sonra hata response'u oluşturur /// </summary> /// <param name="data"></param> /// <param name="ee"></param> /// <returns></returns> public ResponseModel SendExceptionResponse(Exception ee) { LogService logService = new LogService(this.ConnectionString); StringBuilder sb = new StringBuilder(); sb.AppendLine(Request.ToString()); sb.AppendLine(""); sb.AppendLine("##Headers##"); if (Request.Headers != null) { foreach (var header in Request.Headers) { sb.AppendLine("Key:" + header.Key); sb.AppendLine("Values:"); header.Value.ToList().ForEach(p => { sb.AppendLine(p); sb.AppendLine(""); }); sb.AppendLine("-----------------"); } } sb.AppendLine(""); sb.AppendLine("##Content Headers##"); if (HttpContext.Request.Headers != null) { foreach (var header in HttpContext.Request.Headers) { sb.AppendLine("Key:" + header.Key); sb.AppendLine("Values:"); header.Value.ToList().ForEach(p => { sb.AppendLine(p); sb.AppendLine(""); }); sb.AppendLine("-----------------"); } } logService.AddExceptionLog(sb.ToString(), ee.Message, CurrentUser == null ? (int?)null : CurrentUser.UserID); return(new ResponseModel(null, ResponseStatus.Error)); }