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