diff --git a/src/JsonApiDotNetCore/Extensions/IServiceCollectionExtensions.cs b/src/JsonApiDotNetCore/Extensions/IServiceCollectionExtensions.cs index 1e646c085d..22653f0e8f 100644 --- a/src/JsonApiDotNetCore/Extensions/IServiceCollectionExtensions.cs +++ b/src/JsonApiDotNetCore/Extensions/IServiceCollectionExtensions.cs @@ -18,22 +18,38 @@ public static class IServiceCollectionExtensions public static void AddJsonApi(this IServiceCollection services) where TContext : DbContext { - _addInternals(services, new JsonApiOptions()); + var mvcBuilder = services.AddMvc(); + AddInternals(services, new JsonApiOptions(), mvcBuilder); } public static void AddJsonApi(this IServiceCollection services, Action options) where TContext : DbContext { var config = new JsonApiOptions(); + options(config); - _addInternals(services, config); + + var mvcBuilder = services.AddMvc(); + AddInternals(services, config, mvcBuilder); } - private static void _addInternals(IServiceCollection services, JsonApiOptions jsonApiOptions) - where TContext : DbContext + public static void AddJsonApi(this IServiceCollection services, + Action options, + IMvcBuilder mvcBuilder) where TContext : DbContext + { + var config = new JsonApiOptions(); + + options(config); + + AddInternals(services, config, mvcBuilder); + } + + private static void AddInternals(IServiceCollection services, + JsonApiOptions jsonApiOptions, + IMvcBuilder mvcBuilder) where TContext : DbContext { services.AddJsonApiInternals(jsonApiOptions); - services.AddMvc() + mvcBuilder .AddMvcOptions(opt => { opt.Filters.Add(typeof(JsonApiExceptionFilter)); opt.SerializeAsJsonApi(jsonApiOptions);