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())); }