#asp.net #entity-framework #asp.net-core #entity-framework-core #azure-managed-identity
#asp.net #entity-framework #asp.net-core #entity-framework-core #azure-managed-identity
Вопрос:
Я следовал документации MS здесь, чтобы настроить управляемую идентификацию Azure AD для аутентификации Azure SQL, которая включает в себя настройку строки подключения (удаление имени пользователя / пароля) и добавление этих кодов в конструктор DbContext:
var conn = (Microsoft.Data.SqlClient.SqlConnection)Database.GetDbConnection();
conn.AccessToken = (new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Resu<
Он отлично работает со стандартным services.AddDbContext()
методом в Startup.cs. Но как только я использую services.AddDbContextPool()
для повышения производительности, проверка подлинности прерывается со следующей ошибкой:
Исключение SQLException: ошибка входа для пользователя «. Microsoft.Data.База поставщиков.DbConnectionPool.CheckPoolBlockingPeriod(исключение e)
Является ли это известным ограничением AddDbContextPool()
?
Комментарии:
1. @thankyousd Вам удалось устранить эту проблему? Любая помощь была бы оценена.
2. @utvecklare Оказывается, пул просто не будет работать с шаблоном токенов на основе конструктора, потому что конструктор вызывается только один раз. Я переключился на использование
DbConnectionInterceptor
шаблона. Смотрите devblogs.microsoft.com/azure-sdk /…