public static IApplicationBuilder UseNativeGlobalExceptionErrorHandler(this IApplicationBuilder app)
        {
            app.UseExceptionHandler(errorApp =>
            {
                errorApp.Run(async context =>
                {
                    var errorFeature = context.Features.Get <IExceptionHandlerFeature>();
                    var exception    = errorFeature.Error;

                    // Log exception and/or run some other necessary code...

                    var errorResponse = new HttpError();

                    errorResponse.StatusCode = exception.HResult;
                    errorResponse.Message    = exception.Message;

                    //if (exception is HttpException httpException)
                    //{
                    //    errorResponse.StatusCode = httpException.StatusCode;
                    //    errorResponse.Message = httpException.Message;
                    //}

                    context.Response.StatusCode  = (int)errorResponse.StatusCode;
                    context.Response.ContentType = "application/json";
                    await context.Response.WriteAsync(errorResponse.ToJsonString());
                });
            });

            return(app);
        }
        private Task HandleExceptionAsync(HttpContext context, Exception e)
        {
            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)HttpStatusCode.InternalServerError;

            HttpError exception = new HttpError
            {
                StatusCode = context.Response.StatusCode,
                Message    = e.Message
            };

            _logger.Error(e, e.Message);

            return(context.Response.WriteAsync(exception.ToJsonString()));
        }