public static void UpdateApiErrorResponse(HttpContext context, Exception ex, Core.ErrorServerModel error) { if (ex.GetType().Name == nameof(DbException) || ex.GetType().Name == nameof(SqlException)) { error.ApiDetail = "Exception was a database exception!"; } //error.Links = "https://gethelpformyerror.com/"; }
private void HandleExceptionAsync(HttpContext context, Exception exception) { var error = new Core.ErrorServerModel { ApiErrorId = Guid.NewGuid().ToString(), //ApiStatus = (int)HttpStatusCode.InternalServerError, }; HttpStatusCode httpStatusCode = HttpStatusCode.InternalServerError; switch (exception) { case BadRequestException badRequestException: httpStatusCode = HttpStatusCode.BadRequest; error.ApiTitle = $"{badRequestException.Message} {ERRORText}"; break; case NotFoundException notFoundException: httpStatusCode = HttpStatusCode.NotFound; error.ApiTitle = $"{notFoundException.Message} {ERRORText}"; break; case Exception ex: httpStatusCode = HttpStatusCode.InternalServerError; error.ApiTitle = $"{ex.Message} {ERRORText}"; break; } error.ApiStatus = (int)httpStatusCode; _options.AddResponseDetails?.Invoke(context, exception, error); var innerExMessage = GetInnermostExceptionMessage(exception); var level = _options.DetermineLogLevel?.Invoke(exception) ?? LogLevel.Error; _logger.Log(level, exception, "ApiExceptionMiddleware!!! " + innerExMessage + " -- {ErrorId}.", error.ApiErrorId); var result = JsonConvert.SerializeObject(error); context.Response.ContentType = "application/json"; context.Response.StatusCode = (int)httpStatusCode; context.Response.WriteAsync(result); }