/// <summary> /// 添加AspNet Core web api相关配置 /// </summary> /// <param name="services"></param> /// <param name="swaggerConfigurationAction">swagger配置</param> /// <param name="dynamicWebApiConfigurationAction">panda.DynamicWebApi配置</param> /// <returns></returns> public static IServiceCollection AddRivenAspNetCoreSwashbuckle(this IServiceCollection services, Action <SwaggerGenOptions> swaggerConfigurationAction = null, Action <DynamicWebApiOptions> dynamicWebApiConfigurationAction = null) { // swagger services.AddSwaggerGen((options) => { options.DocInclusionPredicate((docName, description) => true); swaggerConfigurationAction?.Invoke(options); }); // DynamicWebApi if (dynamicWebApiConfigurationAction != null) { var dynamicWebApiOptions = new DynamicWebApiOptions(); dynamicWebApiConfigurationAction.Invoke(dynamicWebApiOptions); services.AddDynamicWebApi(dynamicWebApiOptions); } else { services.AddDynamicWebApi(); } return(services); }
/// <summary> /// 添加动态 WebAPI 到容器 /// </summary> /// <param name="services"></param> /// <param name="options">configuration</param> /// <returns></returns> public static IServiceCollection AddDynamicWebApi(this IServiceCollection services, DynamicWebApiOptions options) { if (options == null) { throw new ArgumentException(nameof(options)); } options.Valid(); AppConsts.DefaultAreaName = options.DefaultAreaName; AppConsts.DefaultHttpVerb = options.DefaultHttpVerb; AppConsts.DefaultApiPreFix = options.DefaultApiPrefix; AppConsts.ControllerPostfixes = options.RemoveControllerPostfixes; AppConsts.ActionPostfixes = options.RemoveActionPostfixes; AppConsts.FormBodyBindingIgnoredTypes = options.FormBodyBindingIgnoredTypes; var partManager = services.TryGetSingletonInstance <ApplicationPartManager>(); if (partManager == null) { throw new InvalidOperationException("\"AddDynamicWebApi\" 必须在 \"AddMvc\" 方法之后调用"); } // Add a custom controller checker partManager.FeatureProviders.Add(new DynamicWebApiControllerFeatureProvider()); services.Configure <MvcOptions>(o => { // Register Controller Routing Information Converter o.Conventions.Add(new DynamicWebApiConvention(services)); }); return(services); }