private static void AddStaticFiles(SeedBuilder builder) { builder.Configure((app, routes, serviceProvider) => { var env = serviceProvider.GetRequiredService <IHostingEnvironment>(); IFileProvider fileProvider; // 开发环境下需要直接读取模块目录下的文件 if (env.IsDevelopment()) { var fileProviders = new List <IFileProvider> { new ModuleProjectStaticFileProvider(env), new ModuleEmbeddedStaticFileProvider(env) }; fileProvider = new CompositeFileProvider(fileProviders); } else { fileProvider = new ModuleEmbeddedStaticFileProvider(env); } app.UseStaticFiles(new StaticFileOptions { RequestPath = "", FileProvider = fileProvider }); }); }
public static SeedBuilder AddDataAccess(this SeedBuilder builder) { builder.ConfigureServices(services => { services.AddScoped <IDataMigrationManager, DataMigrationManager>(); services.AddScoped <IModuleTenantEvents, AutoDataMigration>(); services.AddScoped <IDataMigrator, DataMigrator>(); services.TryAddDataProvider(name: "Microsoft SQLServer", provider: "SqlConnection"); services.TryAddDataProvider(name: "MySql Database", provider: "MySql"); services.AddSingleton <IStore>(sp => { return(new Store(sp)); }); services.AddScoped <IDbContext>(sp => { var typeConfigs = sp.GetServices <IEntityTypeConfigurationProvider>() .InvokeAsync(provider => provider.GetEntityTypeConfigurationsAsync(), null) .Result; return(sp.GetService <IStore>()?.CreateDbContext(typeConfigs.ToArray())); }); }); return(builder); }
public static SeedBuilder AddSetupFeatures(this SeedBuilder builder, params string[] featureIds) { foreach (var featureId in featureIds) { builder.ApplicationServices.AddTransient(sp => new EngineFeature(featureId)); } return(builder); }
public static SeedBuilder AddGlobalFeatures(this SeedBuilder builder, params string[] featureIds) { foreach (var featureId in featureIds) { builder.ApplicationServices.AddTransient(sp => new EngineFeature(featureId, alwaysEnabled: true)); } return(builder); }
private static void AddPluginServices(SeedBuilder builder) { builder.ApplicationServices.AddPluginManagerHost(); builder.ConfigureServices(services => { services.AddPluginManager(); }); }
public static SeedBuilder AddCaching(this SeedBuilder builder) { builder.ConfigureServices(services => { services.AddSingleton <ISignal, Signal>(); services.AddSingleton <IMemoryCache, MemoryCache>(); }); return(builder); }
public static SeedBuilder AddDeferredTasks(this SeedBuilder builder) { builder.ConfigureServices(services => { services.TryAddScoped <IDeferredTaskEngine, DeferredTaskEngine>(); services.TryAddScoped <IDeferredTaskState, HttpContextTaskState>(); }); return(builder); }
public static SeedBuilder AddSitesFolder(this SeedBuilder builder) { var services = builder.ApplicationServices; services.AddSingleton <IEngineSettingsConfigurationProvider, EngineSettingsConfigurationProvider>(); services.AddSingleton <IEngineSettingsManager, EngineSettingsManager>(); services.AddTransient <IConfigureOptions <EngineOptions>, EngineOptionsSetup>(); return(builder); }
public static SeedBuilder AddBackgroundTasks(this SeedBuilder builder) { builder.ConfigureServices(services => { services.TryAddSingleton <IBackgroundTaskService, BackgroundTaskService>(); services.AddScoped <BackgroundTasksStarter>(); services.AddScoped <IModuleTenantEvents>(sp => sp.GetRequiredService <BackgroundTasksStarter>()); }); return(builder); }
public static SeedBuilder WithTenants(this SeedBuilder builder) { var services = builder.ApplicationServices; services.AddSingleton <IEngineSettingsConfigurationProvider, EngineSettingsConfigurationProvider>(); services.AddScoped <IEngineDescriptorManager, FileEngineDescriptorManager>(); services.AddSingleton <IEngineSettingsManager, EngineSettingsManager>(); services.AddTransient <IConfigureOptions <EngineOptions>, EngineOptionsSetup>(); services.AddScoped <EngineSettingsWithTenants>(); return(builder); }
public static SeedBuilder AddTenantFeatures(this SeedBuilder builder, params string[] featureIds) { builder.ConfigureServices(services => { foreach (var featureId in featureIds) { services.AddTransient(sp => new EngineFeature(featureId, alwaysEnabled: true)); } }); return(builder); }
public static SeedBuilder AddEngineStorage(this SeedBuilder builder) { builder.AddSitesFolder() .ConfigureServices(services => { services.AddScoped <IEngineDescriptorManager, EngineDescriptorManager>(); services.AddScoped <IEngineStateManager, EngineStateManager>(); services.AddScoped <IEngineFeaturesManager, EngineFeaturesManager>(); services.AddScoped <IEngineDescriptorFeaturesManager, EngineDescriptorFeaturesManager>(); }); return(builder); }
private static void AddAuthentication(SeedBuilder builder) { builder.ApplicationServices.AddAuthentication(); builder.ConfigureServices(services => { services.AddAuthentication(); services.AddSingleton <IAuthenticationSchemeProvider, AuthenticationSchemeProvider>(); }) .Configure(app => { app.UseAuthentication(); }); }
private static void AddDataProtection(SeedBuilder builder) { builder.ConfigureServices((services, serviceProvider) => { var settings = serviceProvider.GetRequiredService <EngineSettings>(); var options = serviceProvider.GetRequiredService <IOptions <EngineOptions> >(); var directory = Directory.CreateDirectory(Path.Combine( options.Value.ApplicationDataPath, options.Value.ContainerName, settings.Name, "DataProtection-Keys")); services.Add(new ServiceCollection() .AddDataProtection() .PersistKeysToFileSystem(directory) .SetApplicationName(settings.Name) .Services); }); }
private static void AddAntiForgery(SeedBuilder builder) { //builder.ApplicationServices.AddAntiforgery(); builder.ConfigureServices((services, serviceProvider) => { var settings = serviceProvider.GetRequiredService <EngineSettings>(); var tenantName = settings.Name; var tenantPrefix = "/" + settings.RequestUrlPrefix; services.AddAntiforgery(options => { options.HeaderName = "X-XSRF-TOKEN"; options.Cookie.Name = "seedforgery_" + tenantName; options.Cookie.Path = tenantPrefix; }); }); }
public static SeedBuilder AddSeed(this IServiceCollection services) { var builder = services .LastOrDefault(d => d.ServiceType == typeof(SeedBuilder))? .ImplementationInstance as SeedBuilder; if (builder == null) { builder = new SeedBuilder(services); services.AddSingleton(builder); AddDefaultServices(services); AddEngineServices(services); AddPluginServices(builder); AddStaticFiles(builder); AddAntiForgery(builder); AddAuthentication(builder); AddDataProtection(builder); services.AddSingleton(services); } return(builder); }
public static SeedBuilder AddMvc(this SeedBuilder builder) { return(builder.RegisterStartup <Startup>()); }
private static void AddTenantCookie(SeedBuilder builder) { builder.ConfigureServices((service, serviceProvider) => { }); }