Я использую Azure управляемое удостоверение, чтобы предоставить azure sql db доступ к службе приложений. Я включил удостоверение и предоставил доступ к субъекту службы из группы пользователей. Теперь, когда я пытаюсь получить токен доступа от поставщика токенов Azure с использованием классов db *, он не работает, но если я использую классы sql*, служба работает как шарм. Я не могу найти ничего, почему это так.
Игнорировать имена переменных.
Код, который не работает:
SqlDatabase db = new SqlDatabase(****CONNECTIONSTRING****);
using (DbConnection conn1 = db.CreateConnection())
{
var conn = (SqlConnection)conn1;
conn.AccessToken = (new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider()).GetAccessTokenAsync("***").Result;
if (conn.State == ConnectionState.Closed) conn.Open();
using (DbCommand dbcmd = db.GetStoredProcCommand("dbo.AllCustomerTypeGet"))
{
//Insert Record in Debug Log table
InsertDebugLog(dbcmd, LoginUser, true, IsRequiredLog);
..........
........
......
И код, который работает:
using (SqlConnection conn = new SqlConnection(****CONNECTIONSTRING****))
{
conn.AccessToken = (new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider()).GetAccessTokenAsync("***").Result;
if (conn.State == ConnectionState.Closed) conn.Open();
using (SqlCommand cmd = new SqlCommand("dbo.AllCustomerTypeGet", conn))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
using (SqlDataReader rdr = cmd.ExecuteReader())
........
........
........
Это управляемая идентификация, предназначенная для работы с определенными c классами баз данных, а не с более общими c, такими как dbconnection, dbcommand et c?