#asp.net-core #autofac
#asp.net-ядро #autofac
Вопрос:
У меня есть ASP.NET Приложение Core 2.2, которое в настоящее время использует следующие зависимости:
- Autofac.AspNetCore.Multitenant версия 1.1.0
- Autofac.AspNetCore.Extensions версия : 1.0.2
Я хочу обновить приложение с ASP.NET Ядро 2.2 для ASP.NET 5. Из-за нового Generic IHostBuilder
и using AutofacServiceProviderFactory
я немного растерялся относительно того, как создавать арендаторов в program.cs и добавлять / удалять во время выполнения. В .NET Core 2.2 я делаю это следующим образом:
var webHost = CreateTenantWebHostBuilder(args)
.UseAutofacMultiTenant()
.UseStartup<Startup>()
.Build();
using (var scope = webHost.Services.CreateScope())
{
try
{
var applicationLifetime = scope.ServiceProvider
.GetRequiredService<IApplicationLifetime>();
var tenantStore = scope.ServiceProvider
.GetRequiredService<ICustomTenantsStore>();
await tenantStore.InitializeTenantsAsync(applicationLifetime.ApplicationStopping);
}
catch (Exception ex)
{
}
}
await webHost.RunAsync(cancelTokenSource.Token);
Ответ №1:
Я бы рекомендовал потратить некоторое время на изучение некоторых доступных ресурсов.
- В документации содержится пошаговое руководство по настройке мультитенанта в ASP.NET Ядро.
- В
Autofac.AspNetCore.Multitenant
у репо есть образцы которые показывают, как бороться с регистрация фабрики контейнеров с несколькими арендаторами, настройка общих зависимостей, и использование статического метода для настройки клиентов.
Вы совершаете значительный скачок с .NET Core 2.2 на 5.0, поэтому вы не сможете оставаться на старых версиях Autofac. Я бы рекомендовал обновить до последней версии — вы получите обновленную поддержку совместимости для .NET 5, исправления ошибок, некоторые улучшения производительности и улучшенную поддержку по устранению неполадок (среди прочего, в последних версиях Autofac и расширений).
Комментарии:
1. Я согласен, что это скачок. Сначала я обновлюсь до версии 3.1 и соответственно обновлю библиотеки Autofac. Просто я был смущен новым универсальным HostBuilder в отношении моей реализации «ITenantIdentificationStrategy».