/// <summary> /// Api异常 /// </summary> /// <param name="errorMsg"></param> /// <param name="ex"></param> public static void ApiError(object obj, Exception ex = null) { if (obj is MonitorLog) { MonitorLog monLog = obj as MonitorLog; string innerException = String.Empty; while (ex.InnerException != null) { ex = ex.InnerException; innerException += ex.InnerException?.Message + "\r\n" + ex.InnerException?.StackTrace + "\r\n"; } string message = monLog.GetErrorInfo() + $@"【{ex.Message}】内部错误【{ex.InnerException?.Message}】"; LogApiError.Error(GetError(monLog, message, innerException, (int)ApplicationType.Api), ex); } else { LogApiError.Error(obj, ex); } }
public async Task Invoke(HttpContext context) { MonitorLog monitorLog = new MonitorLog(); try { HttpRequest request = context.Request; monitorLog.ExecuteStartTime = DateTime.Now; monitorLog.HttpMethod = request.Method; monitorLog.ActionParams = await ReadBodyAsync(context.Request); monitorLog.HttpRequestHeaders = JsonConvert.SerializeObject(request.Headers); monitorLog.IP = GetUserIp(context); await _next(context); monitorLog.ExecuteEndTime = DateTime.Now; monitorLog.ResponseData = await ReadBodyAsync(context.Response); _logger.LogInformation(monitorLog.GetLoginfo()); } catch (Exception ex) { _logger.LogError(ex, monitorLog.GetErrorInfo()); var statusCode = context.Response.StatusCode; if (ex is UserFriendlyException) { statusCode = 400; } else if (ex is AncAuthorizationException) { statusCode = 401; } else if (ex is AncAuthenticationException) { statusCode = 403; } await HandleExceptionAsync(context, statusCode, ex.Message); } //finally //{ // var statusCode = context.Response.StatusCode; // var msg = ""; // switch (statusCode) // { // case 500: // msg = "服务器系统内部错误"; // break; // case 401: // msg = "未登录"; // break; // case 403: // msg = "无权限执行此操作"; // break; // case 408: // msg = "请求超时"; // break; // } // if (!string.IsNullOrWhiteSpace(msg)) // { // await HandleExceptionAsync(context, statusCode, msg); // } //} }