public static IApplicationBuilder UseApiExceptionHandler(this IApplicationBuilder builder, Action <ApiExceptionOptions> configureOptins) { var options = new ApiExceptionOptions(); configureOptins(options); return(builder.UseMiddleware <ApiExceptionMiddleware>(options)); }
private Task HandleExceptionAsync(HttpContext ctx, Exception ex, ApiExceptionOptions opts) { var error = new ApiError { Id = GuidGenerator.Generate(), StatusCode = (short)HttpStatusCode.InternalServerError, Title = "Internal Server Error" }; opts.AddResponseDetails?.Invoke(ctx, ex, error); var innerExMessage = GetInnerMostExceptionMessage(ex); loggerManager.LogError($"{error.ToString()} \n{innerExMessage}"); var result = JsonConvert.SerializeObject(error); // ctx.Response.AddApplicationError(error.Title); ctx.Response.ContentType = "application/json"; ctx.Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(ctx.Response.WriteAsync(error.ToString())); }
public static IApplicationBuilder UseApiExceptionHandler(this IApplicationBuilder builder) { var options = new ApiExceptionOptions(); return(builder.UseMiddleware <ApiExceptionMiddleware>(options)); }
public ApiExceptionMiddleware(RequestDelegate next, ILoggerManager loggerManager, ApiExceptionOptions options) { this.next = next; this.loggerManager = loggerManager; this.options = options; }