Esempio n. 1
0
 /// <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);
     }
 }
Esempio n. 2
0
        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);
            //    }
            //}
        }