AddDbContextPool не работает с проверкой подлинности Azure Ad для Azure SQL

#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 /…