DI: configuration
This commit is contained in:
parent
515f7de555
commit
74d8709f62
@ -20,7 +20,7 @@ namespace ASC.Common.Utils
|
||||
{
|
||||
AppSettings = serviceProvider.GetService<IConfiguration>();
|
||||
LogManager = serviceProvider.GetService<LogManager>();
|
||||
ConnectionStrings = new ConnectionStringCollection(GetSettings<ConnectionStringSettings>("ConnectionStrings"));
|
||||
ConnectionStrings = AppSettings.GetConnectionStrings();
|
||||
}
|
||||
public static void UseCm(this IApplicationBuilder applicationBuilder)
|
||||
{
|
||||
@ -28,27 +28,11 @@ namespace ASC.Common.Utils
|
||||
}
|
||||
public static IEnumerable<T> GetSettings<T>(string section) where T : new()
|
||||
{
|
||||
var result = new List<T>();
|
||||
|
||||
var sectionSettings = AppSettings.GetSection(section);
|
||||
|
||||
foreach (var ch in sectionSettings.GetChildren())
|
||||
{
|
||||
var cs = new T();
|
||||
ch.Bind(cs);
|
||||
result.Add(cs);
|
||||
}
|
||||
|
||||
return result;
|
||||
return AppSettings.GetSettings<T>(section);
|
||||
}
|
||||
public static T GetSetting<T>(string section) where T : new()
|
||||
{
|
||||
var sectionSettings = AppSettings.GetSection(section);
|
||||
|
||||
var cs = new T();
|
||||
sectionSettings.Bind(cs);
|
||||
|
||||
return cs;
|
||||
return AppSettings.GetSetting<T>(section);
|
||||
}
|
||||
}
|
||||
|
||||
@ -76,4 +60,41 @@ namespace ASC.Common.Utils
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class ConfigurationExtension
|
||||
{
|
||||
public static IEnumerable<T> GetSettings<T>(this IConfiguration configuration, string section) where T : new()
|
||||
{
|
||||
var result = new List<T>();
|
||||
|
||||
var sectionSettings = configuration.GetSection(section);
|
||||
|
||||
foreach (var ch in sectionSettings.GetChildren())
|
||||
{
|
||||
var cs = new T();
|
||||
ch.Bind(cs);
|
||||
result.Add(cs);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
public static T GetSetting<T>(this IConfiguration configuration, string section) where T : new()
|
||||
{
|
||||
var sectionSettings = configuration.GetSection(section);
|
||||
|
||||
var cs = new T();
|
||||
sectionSettings.Bind(cs);
|
||||
|
||||
return cs;
|
||||
}
|
||||
|
||||
public static ConnectionStringCollection GetConnectionStrings(this IConfiguration configuration)
|
||||
{
|
||||
return new ConnectionStringCollection(configuration.GetSettings<ConnectionStringSettings>("ConnectionStrings"));
|
||||
}
|
||||
public static ConnectionStringSettings GetConnectionStrings(this IConfiguration configuration, string key)
|
||||
{
|
||||
return configuration.GetConnectionStrings()[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,8 @@ using ASC.Common.Logging;
|
||||
using ASC.Common.Module;
|
||||
using ASC.Common.Utils;
|
||||
using ASC.Core.Data;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.Core.Tenants;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace ASC.Core.Billing
|
||||
@ -45,10 +46,11 @@ namespace ASC.Core.Billing
|
||||
private Timer timer;
|
||||
|
||||
|
||||
public TariffSyncService(IServiceProvider serviceProvider)
|
||||
public TariffSyncService(IServiceProvider serviceProvider, IConfiguration configuration)
|
||||
{
|
||||
config = TariffSyncServiceSection.GetSection();
|
||||
ServiceProvider = serviceProvider;
|
||||
Configuration = configuration;
|
||||
}
|
||||
|
||||
|
||||
@ -59,8 +61,8 @@ namespace ASC.Core.Billing
|
||||
{
|
||||
if (!quotaServices.ContainsKey(version))
|
||||
{
|
||||
var cs = ConfigurationManager.ConnectionStrings[config.ConnectionStringName + version] ??
|
||||
ConfigurationManager.ConnectionStrings[config.ConnectionStringName];
|
||||
var cs = Configuration.GetConnectionStrings(config.ConnectionStringName + version) ??
|
||||
Configuration.GetConnectionStrings(config.ConnectionStringName);
|
||||
quotaServices[version] = new DbQuotaService(cs).GetTenantQuotas();
|
||||
}
|
||||
return quotaServices[version];
|
||||
@ -75,6 +77,7 @@ namespace ASC.Core.Billing
|
||||
}
|
||||
|
||||
public IServiceProvider ServiceProvider { get; }
|
||||
public IConfiguration Configuration { get; }
|
||||
|
||||
public void Start()
|
||||
{
|
||||
@ -100,7 +103,7 @@ namespace ASC.Core.Billing
|
||||
{
|
||||
var scope = ServiceProvider.CreateScope();
|
||||
var tariffSync = scope.ServiceProvider.GetService<TariffSync>();
|
||||
tariffSync.Sync(config);
|
||||
tariffSync.Sync(config, Configuration);
|
||||
|
||||
}
|
||||
catch (Exception error)
|
||||
@ -119,13 +122,13 @@ namespace ASC.Core.Billing
|
||||
|
||||
public TenantManager TenantManager { get; }
|
||||
|
||||
public void Sync(TariffSyncServiceSection config)
|
||||
public void Sync(TariffSyncServiceSection config, IConfiguration configuration)
|
||||
{
|
||||
var tenant = TenantManager.GetTenants(false).OrderByDescending(t => t.Version).FirstOrDefault();
|
||||
if (tenant != null)
|
||||
{
|
||||
using var wcfClient = new TariffSyncClient();
|
||||
var quotaService = new DbQuotaService(ConfigurationManager.ConnectionStrings[config.ConnectionStringName]);
|
||||
var quotaService = new DbQuotaService(configuration.GetConnectionStrings(config.ConnectionStringName));
|
||||
|
||||
var oldtariffs = quotaService.GetTenantQuotas().ToDictionary(t => t.Id);
|
||||
// save new
|
||||
|
@ -197,10 +197,13 @@ namespace ASC.Core
|
||||
}
|
||||
|
||||
private void Initialize()
|
||||
{
|
||||
{
|
||||
var connectionStrings = Configuraion.GetConnectionStrings();
|
||||
var dbConnectionStrings = Configuraion.GetConnectionStrings(dbid);
|
||||
|
||||
if (Convert.ToBoolean(Configuraion["core.multi-hosted.config-only"] ?? "false"))
|
||||
{
|
||||
foreach (var cs in ConfigurationManager.ConnectionStrings)
|
||||
foreach (var cs in Configuraion.GetConnectionStrings())
|
||||
{
|
||||
if (cs.Name.StartsWith(dbid + "."))
|
||||
{
|
||||
@ -209,17 +212,17 @@ namespace ASC.Core
|
||||
}
|
||||
}
|
||||
|
||||
regions[dbid] = new HostedSolution(ConfigurationManager.ConnectionStrings[dbid]);
|
||||
regions[dbid] = new HostedSolution(dbConnectionStrings);
|
||||
if (!regions.ContainsKey(string.Empty))
|
||||
{
|
||||
regions[string.Empty] = new HostedSolution(ConfigurationManager.ConnectionStrings[dbid]);
|
||||
regions[string.Empty] = new HostedSolution(dbConnectionStrings);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
var find = false;
|
||||
foreach (var cs in ConfigurationManager.ConnectionStrings)
|
||||
foreach (var cs in connectionStrings)
|
||||
{
|
||||
if (cs.Name.StartsWith(dbid + "."))
|
||||
{
|
||||
@ -230,15 +233,15 @@ namespace ASC.Core
|
||||
}
|
||||
if (find)
|
||||
{
|
||||
regions[dbid] = new HostedSolution(ConfigurationManager.ConnectionStrings[dbid]);
|
||||
regions[dbid] = new HostedSolution(dbConnectionStrings);
|
||||
if (!regions.ContainsKey(string.Empty))
|
||||
{
|
||||
regions[string.Empty] = new HostedSolution(ConfigurationManager.ConnectionStrings[dbid]);
|
||||
regions[string.Empty] = new HostedSolution(dbConnectionStrings);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var connectionString in ConfigurationManager.ConnectionStrings)
|
||||
foreach (var connectionString in connectionStrings)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -31,6 +31,7 @@ namespace ASC.Core.Common.Tests
|
||||
using ASC.Common.Utils;
|
||||
using ASC.Core.Caching;
|
||||
using ASC.Core.Data;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NUnit.Framework;
|
||||
|
||||
[TestFixture]
|
||||
@ -39,9 +40,9 @@ namespace ASC.Core.Common.Tests
|
||||
private readonly ISubscriptionService service;
|
||||
|
||||
|
||||
public CachedSubscriptionServiceTest()
|
||||
public CachedSubscriptionServiceTest(IConfiguration configuration)
|
||||
{
|
||||
service = new CachedSubscriptionService(new DbSubscriptionService(ConfigurationManager.ConnectionStrings["core"]));
|
||||
service = new CachedSubscriptionService(new DbSubscriptionService(configuration.GetConnectionStrings("core")));
|
||||
}
|
||||
|
||||
|
||||
|
@ -29,6 +29,7 @@ namespace ASC.Core.Common.Tests
|
||||
{
|
||||
using System;
|
||||
using ASC.Common.Utils;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
public class DbBaseTest<TDbService>
|
||||
{
|
||||
@ -43,11 +44,12 @@ namespace ASC.Core.Common.Tests
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
|
||||
internal IConfiguration Configuration { get; set; }
|
||||
|
||||
protected DbBaseTest()
|
||||
{
|
||||
Service = (TDbService)Activator.CreateInstance(typeof(TDbService), ConfigurationManager.ConnectionStrings["core"]);
|
||||
Service = (TDbService)Activator.CreateInstance(typeof(TDbService), Configuration.GetConnectionStrings("core"));
|
||||
Tenant = 1024;
|
||||
|
||||
//var pattern = "%message (%property{duration} ms) %property{sql} %property{sqlParams}%newline";
|
||||
|
@ -44,7 +44,7 @@ namespace ASC.Core.Common.Tests
|
||||
|
||||
public DbTenantServiceTest()
|
||||
{
|
||||
userService = new DbUserService(ConfigurationManager.ConnectionStrings["core"]);
|
||||
userService = new DbUserService(Configuration.GetConnectionStrings("core"));
|
||||
}
|
||||
|
||||
|
||||
|
@ -30,15 +30,17 @@ namespace ASC.Core.Common.Tests
|
||||
using System.Linq;
|
||||
using ASC.Common.Utils;
|
||||
using ASC.Core.Tenants;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NUnit.Framework;
|
||||
|
||||
[TestFixture]
|
||||
public class HostedSolutionTest
|
||||
{
|
||||
{
|
||||
private IConfiguration Configuration { get; set; }
|
||||
[Test]
|
||||
public void FindTenants()
|
||||
{
|
||||
var h = new HostedSolution(ConfigurationManager.ConnectionStrings["core"]);
|
||||
var h = new HostedSolution(Configuration.GetConnectionStrings("core"));
|
||||
var tenants = h.FindTenants("76ff727b-f987-4871-9834-e63d4420d6e9");
|
||||
Assert.AreNotEqual(0, tenants.Count);
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ namespace ASC.Core.Common.Tests
|
||||
|
||||
public TariffServiceTest(IConfiguration configuration, TenantDomainValidator tenantDomainValidator, TimeZoneConverter timeZoneConverter)
|
||||
{
|
||||
var cs = ConfigurationManager.ConnectionStrings["core"];
|
||||
var cs = configuration.GetConnectionStrings("core");
|
||||
var tenantService = new DbTenantService(cs, tenantDomainValidator, timeZoneConverter);
|
||||
var baseSettings = new CoreBaseSettings(configuration);
|
||||
tariffService = new TariffService(cs, new DbQuotaService(cs), tenantService, baseSettings, new CoreSettings(tenantService, baseSettings, configuration), configuration);
|
||||
|
@ -30,6 +30,7 @@ namespace ASC.Core.Common.Tests
|
||||
using System;
|
||||
using System.Linq;
|
||||
using ASC.Core.Billing;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NUnit.Framework;
|
||||
|
||||
[TestFixture]
|
||||
@ -37,11 +38,12 @@ namespace ASC.Core.Common.Tests
|
||||
{
|
||||
private readonly ITariffSyncService tariffSyncService;
|
||||
|
||||
public IServiceProvider ServiceProvider { get; set; }
|
||||
public IServiceProvider ServiceProvider { get; set; }
|
||||
public IConfiguration Configuration { get; set; }
|
||||
|
||||
public TariffSyncServiceTest()
|
||||
{
|
||||
tariffSyncService = new TariffSyncService(ServiceProvider);
|
||||
tariffSyncService = new TariffSyncService(ServiceProvider, Configuration);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -2,15 +2,16 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using ASC.Common.Utils;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace ASC.Data.Storage.Configuration
|
||||
{
|
||||
public static class StorageConfigFactory
|
||||
{
|
||||
public static IServiceCollection AddStorage(this IServiceCollection services)
|
||||
public static IServiceCollection AddStorage(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
return services.AddSingleton(r => ConfigurationManager.GetSetting<Storage>("Storage"));
|
||||
return services.AddSingleton(r => configuration.GetSetting<Storage>("Storage"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,7 @@ using System.Linq;
|
||||
using ASC.Common.Utils;
|
||||
using ASC.FederatedLogin.Profile;
|
||||
using ASC.Security.Cryptography;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace ASC.FederatedLogin
|
||||
{
|
||||
@ -52,9 +53,9 @@ namespace ASC.FederatedLogin
|
||||
}
|
||||
|
||||
|
||||
public MultiRegionAccountLinker(string databaseId, Signature signature, InstanceCrypto instanceCrypto)
|
||||
public MultiRegionAccountLinker(string databaseId, Signature signature, InstanceCrypto instanceCrypto, IConfiguration configuration)
|
||||
{
|
||||
foreach (var connection in ConfigurationManager.ConnectionStrings)
|
||||
foreach (var connection in configuration.GetConnectionStrings())
|
||||
{
|
||||
if (connection.Name.StartsWith(databaseId))
|
||||
_accountLinkers.Add(connection.Name, new AccountLinker(connection.Name, signature, instanceCrypto));
|
||||
|
@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
||||
using ASC.Common.DependencyInjection;
|
||||
using ASC.Common.Utils;
|
||||
using CommandLine;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace ASC.Resource.Manager
|
||||
@ -63,7 +64,7 @@ namespace ASC.Resource.Manager
|
||||
return;
|
||||
}
|
||||
|
||||
enabledSettings = ConfigurationManager.GetSetting<EnabledSettings>("enabled");
|
||||
enabledSettings = serviceProvider.GetService<IConfiguration>().GetSetting<EnabledSettings>("enabled");
|
||||
cultures = ResourceData.GetCultures().Where(r => r.Available).Select(r => r.Title).Intersect(enabledSettings.Langs).ToList();
|
||||
projects = ResourceData.GetAllFiles();
|
||||
|
||||
|
@ -43,7 +43,7 @@ namespace ASC.Notify
|
||||
ConfigurationManager.Init(serviceProvider);
|
||||
CommonServiceProvider.Init(serviceProvider);
|
||||
|
||||
var c = ConfigurationManager.GetSetting<NotifyServiceCfg>("notify");
|
||||
var c = hostContext.Configuration.GetSetting<NotifyServiceCfg>("notify");
|
||||
c.Init();
|
||||
services.AddSingleton(c);
|
||||
services.AddSingleton<DbWorker>();
|
||||
|
@ -46,7 +46,7 @@ namespace ASC.Studio.Notify
|
||||
services.AddSingleton<StudioNotifyServiceSender>();
|
||||
services.AddHostedService<ServiceLauncher>();
|
||||
services.AddHttpContextAccessor()
|
||||
.AddStorage()
|
||||
.AddStorage(hostContext.Configuration)
|
||||
.AddLogManager();
|
||||
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
|
@ -103,7 +103,7 @@ namespace ASC.People
|
||||
|
||||
|
||||
services.AddLogManager()
|
||||
.AddStorage()
|
||||
.AddStorage(Configuration)
|
||||
.AddWebItemManager()
|
||||
.AddSingleton((r) =>
|
||||
{
|
||||
|
@ -76,7 +76,7 @@ namespace ASC.Web.Api
|
||||
var container = services.AddAutofac(Configuration, HostEnvironment.ContentRootPath);
|
||||
|
||||
services.AddLogManager()
|
||||
.AddStorage()
|
||||
.AddStorage(Configuration)
|
||||
.AddWebItemManager()
|
||||
.AddScoped<ApiContext>()
|
||||
.AddScoped<StudioNotifyService>()
|
||||
@ -108,7 +108,7 @@ namespace ASC.Web.Api
|
||||
app.UseSession();
|
||||
|
||||
app.UseAuthentication();
|
||||
|
||||
|
||||
app.UseAuthorization();
|
||||
|
||||
app.UseCultureMiddleware();
|
||||
|
@ -43,7 +43,7 @@ namespace ASC.Web.Studio
|
||||
services.AddAuthentication("cookie").AddScheme<AuthenticationSchemeOptions, CookieAuthHandler>("cookie", a => { });
|
||||
|
||||
services.AddHttpContextAccessor()
|
||||
.AddStorage()
|
||||
.AddStorage(Configuration)
|
||||
.AddLogManager();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user