powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Multitenancy API
12 сообщений из 12, страница 1 из 1
Multitenancy API
    #39961763
Приветствую!

Разрабатываю на .net core 3.0 Api c multitenancy.
В зависимости от того какой указан Host в заголовке запроса идет подключение к соответствующей базе данных.

Вопрос, где в коде лучше всего выбирать подключение?
Сейчас это так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public void ConfigureServices(IServiceCollection services)
        {
            services
                .AddSingleton(
                    typeof(IConnectionProvider),
                    new ConnectionProvider(Configuration.GetConnectionString("workdb")))
                .AddControllers();
            
        }


workdb задан в appsetting.json.
Планируется что список баз данных со строками подключения и значением host будет храниться в общей базе в таблице.
Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Multitenancy API
    #39961774
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написать и зарегать фабрику, которая в зависимости от текущего hostname будет выбирать и возвращать нужный коннекшен или дбконтекст, а там где нужен коннекшен или дбконтекст инжектить эту фабрику.
...
Рейтинг: 0 / 0
Multitenancy API
    #39961783
А как в ConfigureServices(IServiceCollection services) получить контекст (заголовки) запроса?
...
Рейтинг: 0 / 0
Multitenancy API
    #39961788
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ConfigureServices нет запроса.
Можно внутри метода AddScoped зарегистрировать фабрику, в которой можно будет получить IHttpContextAccessor и через него уже получить заголовки.
Но лучше, конечно, оформить через отдельную фабрику, как сказано выше
...
Рейтинг: 0 / 0
Multitenancy API
    #39961791
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
в ConfigureServices нет запроса.
Можно внутри метода AddScoped зарегистрировать фабрику, в которой можно будет получить IHttpContextAccessor и через него уже получить заголовки.
Но лучше, конечно, оформить через отдельную фабрику, как сказано выше


Есть же уже готовое:

Код: c#
1.
services.AddHttpContextAccessor();



Вообще хорошее правило - всегда использовать контекст и все что с ним связано только через инъекцию IHttpContextAccessor, а не напрямую, как, например, через свойство HttpContext контроллера или тем более через HttpContext.Current. И еще, если надо получить что-то из контекста в объекте не относящемуся к слою веб-фасада, то туда инжектить не IHttpContextAccessor, а какую-либо кастомную обертку к нему, которая уже возвращает именно то, что объекту надо.
...
Рейтинг: 0 / 0
Multitenancy API
    #39961819
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Shocker.Pro
в ConfigureServices нет запроса.
Можно внутри метода AddScoped зарегистрировать фабрику, в которой можно будет получить IHttpContextAccessor и через него уже получить заголовки.
Но лучше, конечно, оформить через отдельную фабрику, как сказано выше


Есть же уже готовое:

Код: c#
1.
services.AddHttpContextAccessor();




Вообще хорошее правило - всегда использовать контекст и все что с ним связано только через инъекцию IHttpContextAccessor, а не напрямую, как, например, через свойство HttpContext контроллера или тем более через HttpContext.Current. И еще, если надо получить что-то из контекста в объекте не относящемуся к слою веб-фасада, то туда инжектить не IHttpContextAccessor, а какую-либо кастомную обертку к нему, которая уже возвращает именно то, что объекту надо.

+1
...
Рейтинг: 0 / 0
Multitenancy API
    #39961919
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin_Patrushev
В зависимости от того какой указан Host в заголовке запроса идет подключение к соответствующей базе данных.


Скажу больше. Сегодня нужно подключение в зависимости от Host, завтра что-то ещё.
Думайте шире.
И вообще, думайте.
...
Рейтинг: 0 / 0
Multitenancy API
    #39962701
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тут вообще разжевано https://stackify.com/writing-multitenant-asp-net-core-applications/
...
Рейтинг: 0 / 0
Multitenancy API
    #39963417
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Shocker.Pro
в ConfigureServices нет запроса.
Можно внутри метода AddScoped зарегистрировать фабрику, в которой можно будет получить IHttpContextAccessor и через него уже получить заголовки.
Но лучше, конечно, оформить через отдельную фабрику, как сказано выше


Есть же уже готовое:

Код: c#
1.
services.AddHttpContextAccessor();



Вообще хорошее правило - всегда использовать контекст и все что с ним связано только через инъекцию IHttpContextAccessor, а не напрямую, как, например, через свойство HttpContext контроллера или тем более через HttpContext.Current. И еще, если надо получить что-то из контекста в объекте не относящемуся к слою веб-фасада, то туда инжектить не IHttpContextAccessor, а какую-либо кастомную обертку к нему, которая уже возвращает именно то, что объекту надо.


Чем HttpContext плох по сравнению IHttpContextAccessor?
...
Рейтинг: 0 / 0
Multitenancy API
    #39963419
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub
Чем HttpContext плох по сравнению IHttpContextAccessor?


Тем, что в ASP.NET Core больше нет HttpContext.Current, т.е. вы не получите доступ к HttpContext как-то иначе.
...
Рейтинг: 0 / 0
Multitenancy API
    #39963461
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub
Чем HttpContext плох по сравнению IHttpContextAccessor?

DI, Unit Tests.
...
Рейтинг: 0 / 0
Multitenancy API
    #39963464
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Тем, что в ASP.NET Core больше нет HttpContext.Current

Мне настолько давно не приходило в голову так его получать, что я об этом даже и не знал.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Multitenancy API
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]