public static IApplicationBuilder UseWrapperizerApiExceptionHandler(this IApplicationBuilder builder) { var options = new ApiExceptionOptions(); builder.UseSerilogRequestLogging(); return(builder.UseMiddleware <ApiExceptionMiddleware>(options)); }
internal static IApplicationBuilder UseExceptionHandlingMiddleware(this IApplicationBuilder builder, Action <ApiExceptionOptions> config) { var options = new ApiExceptionOptions(); config(options); return(builder.UseMiddleware <ExceptionHandlingMiddleware>(options)); }
public static IApplicationBuilder UseApiExceptionHandler(this IApplicationBuilder builder, Action <ApiExceptionOptions> configureOptions) { var options = new ApiExceptionOptions(); configureOptions(options); return(builder.UseMiddleware <ApiExceptionMiddleware>(options)); }
public ApiExceptionMiddleware(ApiExceptionOptions options, RequestDelegate next) { _next = next; _options = options; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var jwtSettings = new JwtSettings(); Configuration.Bind(nameof(jwtSettings), jwtSettings); services.AddSingleton(jwtSettings); var apiExceptionOptions = new ApiExceptionOptions(); Configuration.Bind(nameof(apiExceptionOptions), apiExceptionOptions); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(x => { x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtSettings.Secret)), ValidateIssuer = false, ValidateAudience = false, RequireExpirationTime = false, ValidateLifetime = true }; }); services.AddMvc(options => options.Filters.Add <ValidationFilter>()) .AddFluentValidation(c => c.RegisterValidatorsFromAssemblyContaining <Startup>()); services.AddMetrics(); services.AddControllers(); services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); services.AddAWSService <IAmazonDynamoDB>(); services.AddScoped <ITableConfig, PaymentsTableConfig>(); services.AddScoped <IPaymentsRepository, PaymentsRepository>(); services.AddScoped <IMockBankRepository, MockBankRepository>(); services.AddApiVersioning(setupAction => { setupAction.AssumeDefaultVersionWhenUnspecified = true; setupAction.DefaultApiVersion = new ApiVersion(1, 0); setupAction.ReportApiVersions = true; // setupAction.ApiVersionReader = new HeaderApiVersionReader("api-version"); //setupAction.ApiVersionReader = new MediaTypeApiVersionReader(); }); services.AddSwaggerGen(setupAction => { setupAction.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "Checkout PaymentGateWay", Description = "Checkout PaymentGateway Description", Contact = new OpenApiContact { Name = "Aditya Arisetty", Email = string.Empty } }); var xmlCommentsFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlCommentsFullPath = Path.Combine(AppContext.BaseDirectory, xmlCommentsFile); setupAction.IncludeXmlComments(xmlCommentsFullPath); setupAction.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme() { Name = "Authorization", Type = SecuritySchemeType.ApiKey, Scheme = "Bearer", BearerFormat = "JWT", In = ParameterLocation.Header, Description = "Enter 'Bearer' [space] and then your valid token in the text input below.\r\n\r\nExample: \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\"", }); setupAction.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, Array.Empty <string>() } }); }); }
public static IApplicationBuilder UseApiExceptionHandler(this IApplicationBuilder builder) { var options = new ApiExceptionOptions(); return(builder.UseMiddleware <MyFilterExceptionMiddleware>(options)); }