C# 用户登录失败'&书信电报;令牌识别主体>';。使用托管标识使用Azure Function app和Azure SQL服务时,令牌已过期
我正在使用服务总线触发的功能应用程序。它使用C# 用户登录失败'&书信电报;令牌识别主体>';。使用托管标识使用Azure Function app和Azure SQL服务时,令牌已过期,c#,azure-function-app,azure-sql-server,azure-managed-identity,C#,Azure Function App,Azure Sql Server,Azure Managed Identity,我正在使用服务总线触发的功能应用程序。它使用托管标识连接到Azure SQL Server 连接是使用以下代码创建的 new SqlConnection(this.ConnectionString) { // AzureServiceTokenProvider handles caching the token and refreshing it before it expires AccessToken = new AzureSe
托管标识连接到Azure SQL Server
连接是使用以下代码创建的
new SqlConnection(this.ConnectionString)
{
// AzureServiceTokenProvider handles caching the token and refreshing it before it expires
AccessToken = new AzureServiceTokenProvider().GetAccessTokenAsync("https://database.windows.net/").Result
};
我每天收到几千个事件,所有这些都无法连接到数据库
日志中的堆栈跟踪是
[{"parsedStack":[{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.SqlClient.SqlInternalConnectionTds..ctor","level":0,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.SqlClient.SqlConnectionFactory.CreateConnection","level":1,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection","level":2,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.ProviderBase.DbConnectionPool.CreateObject","level":3,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.ProviderBase.DbConnectionPool.UserCreateRequest","level":4,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.ProviderBase.DbConnectionPool.TryGetConnection","level":5,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.ProviderBase.DbConnectionPool.TryGetConnection","level":6,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.ProviderBase.DbConnectionFactory.TryGetConnection","level":7,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal","level":8,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection","level":9,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.SqlClient.SqlConnection.TryOpen","level":10,"line":0},
{"assembly":"System.Data.SqlClient, Version=4.5.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Data.SqlClient.SqlConnection.Open","level":11,"line":0},
{"assembly":"Microsoft.EntityFrameworkCore.Relational, Version=2.2.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60","method":"Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection","level":12,"line":0},
{"assembly":"Microsoft.EntityFrameworkCore.Relational, Version=2.2.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60","method":"Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open","level":13,"line":0},
{"assembly":"Microsoft.EntityFrameworkCore.Relational, Version=2.2.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60","method":"Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1+Enumerator.BufferlessMoveNext","level":14,"line":0},
{"assembly":"Microsoft.EntityFrameworkCore.SqlServer, Version=2.2.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60","method":"Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute","level":15,"line":0},
{"assembly":"Microsoft.EntityFrameworkCore.Relational, Version=2.2.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60","method":"Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1+Enumerator.MoveNext","level":16,"line":0},
{"assembly":"Microsoft.EntityFrameworkCore, Version=2.2.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60","method":"Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider+<_TrackEntities>d__17`2.MoveNext","level":17,"line":0},
{"assembly":"Microsoft.EntityFrameworkCore, Version=2.2.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60","method":"Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider+ExceptionInterceptor`1+EnumeratorExceptionInterceptor.MoveNext","level":18,"line":0},
{"assembly":"System.Linq, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Linq.Enumerable+SelectEnumerableIterator`2.MoveNext","level":19,"line":0},
{"assembly":"System.Linq, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Linq.Enumerable.TryGetFirst","level":20,"line":0},
{"assembly":"MaskedProjectPNameIngestor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","method":"MaskedProjectPNameIngestor.SRFunction.RetrieveCodeAsync","level":21,"line":182,"fileName":"D:\\a\\1\\s\\MaskedProject\\PNameIngestion\\MaskedProjectPNameIngestor\\SRFunction.cs"},
{"assembly":"MaskedProjectPNameIngestor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","method":"MaskedProjectPNameIngestor.SRFunction+<Run>d__5.MoveNext","level":22,"line":121,"fileName":"D:\\a\\1\\s\\MaskedProject\\PNameIngestion\\MaskedProjectPNameIngestor\\SRFunction.cs"}],
"outerId":"0","message":"Login failed for user '<token-identified principal>'. Token is expired.","type":"System.Data.SqlClient.SqlException","id":"64152618"}]
[{“parsedStack”:[{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“方法”:“System.Data.SqlClient.SqlInternalConnectionDS..ctor”,“级别”:0,“行”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.SqlClient.SqlConnectionFactory.CreateConnection”,“level”:1,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection”,“level”:2,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.ProviderBase.DbConnectionPool.CreateObject”,“level”:3,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.ProviderBase.DbConnectionPool.UserCreateRequest”,“level”:4,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.ProviderBase.DbConnectionPool.TryGetConnection”,“level”:5,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.ProviderBase.DbConnectionPool.TryGetConnection”,“level”:6,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.ProviderBase.DbConnectionFactory.TryGetConnection”,“level”:7,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal”,“level”:8,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection”,“level”:9,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.SqlClient.SqlConnection.TryOpen”,“level”:10,“line”:0},
{“assembly”:“System.Data.SqlClient,Version=4.5.0.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Data.SqlClient.SqlConnection.Open”,“level”:11,“line”:0},
{“assembly”:“Microsoft.EntityFrameworkCore.Relational,Version=2.2.6.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”,“method”:“Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection”,“level”:12,“line”:0},
{“汇编”:“Microsoft.EntityFrameworkCore.Relational,版本=2.2.6.0,区域性=中性,PublicKeyToken=adb9793829ddae60”,“方法”:“Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open”,“级别”:13,“行”:0},
{“assembly”:“Microsoft.EntityFrameworkCore.Relational,Version=2.2.6.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”,“method”:“Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1+枚举数.bufferlessMovenText”,“level”:14,“line”:0},
{“汇编”:“Microsoft.EntityFrameworkCore.SqlServer,版本=2.2.6.0,区域性=中性,PublicKeyToken=adb9793829ddae60”,“方法”:“Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute”,“级别”:15,“行”:0},
{“assembly”:“Microsoft.EntityFrameworkCore.Relational,Version=2.2.6.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”,“method”:“Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1+枚举数.MoveNext”,“level”:16,“line”:0},
{“assembly”:“Microsoft.EntityFrameworkCore,Version=2.2.6.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”,“method”:“Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider+d_u17`2.MoveNext”,“level”:17,“line”:0},
{“汇编”:“Microsoft.EntityFrameworkCore,Version=2.2.6.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”,“方法”:“Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider+ExceptionInterceptor`1+EnumeratorExceptionInterceptor.MoveNext”,“级别”:18,“行”:0},
{“assembly”:“System.Linq,Version=4.2.1.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Linq.Enumerable+SelectEnumerableIterator`2.MoveNext”,“level”:19,“line”:0},
{“assembly”:“System.Linq,Version=4.2.1.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,“method”:“System.Linq.Enumerable.TryGetFirst”,“level”:20,“line”:0},
{“assembly”:“MaskedProjectPNameIngestor,Version=1.0.0,Culture=neutral,PublicKeyToken=null”,“method”:“MaskedProjectPNameIngestor.SRFunction.RetrieveCodeAsync”,“level”:21,“line”:182,“fileName”:“D:\\a\\1\\s\\MaskedProject\\PNameIngestion\\MaskedProjectPNameIngestor\\SRFunction.cs”,
{“assembly”:“maskedprojectpnameentor,Version=1.0.0,Culture=neutral,PublicKeyToken=null”,“method”:“maskedprojectpnameentor.SRFunction+d_u5.MoveNext”,“level”:22,“line”:121,“fileName”:“d:\\a\\1\\s\\MaskedProject\\pnameention\\maskedprojectpnameentor\\SRFunction.cs”,
“outerId”:“0”,“消息”:“用户登录失败”。令牌已过期。”,“类型”:“System.Data.SqlClient.SqlException”,“id”:“64152618”}]
谢谢你的帮助
提前感谢您需要创建用户
您还需要在门户中的
上打开Identity
status
我的结果
使用系统;
使用System.IO;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.Azure.WebJobs;
使用Microsoft.Azure.WebJobs.Extensions.Http;
使用Microsoft.AspNetCore
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Data.SqlClient;
using Microsoft.Azure.Services.AppAuthentication;
using System.Diagnostics;
namespace func_sqlcon
{
public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
var str = "Server=tcp:*********.database.windows.net,1433;Initial Catalog=********;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
//Environment.GetEnvironmentVariable("sqldb_connection");
string AccessToken;
SqlConnection connection = new SqlConnection(str);
try
{
AccessToken = await (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/", "e4c9ab4e-bd27-40d5-8459-230ba2a757fb");
connection.AccessToken = AccessToken;
}
catch (Exception ex)
{
Trace.WriteLine(ex.ToString());
throw;
}
connection.Open();
return new OkObjectResult(AccessToken);
}
}
}