不支持获取关键字:尝试通过.NET核心2.1项目中的“Active Directory集成”选项连接azure DB时出现“身份验证”错误。
注意:我使用EF核心来连接数据源。
更新 - 16/08/2019
现在已在Microsoft.Data.SqlClient 1.0.19221.1-Preview
中为.NET Core添加了Active Directory密码身份验证
不幸的是,.NET Core中尚未完全支持authentication
关键字。这是一个讨论这个问题的issue。
但是.NET Core 2.2为这个comment中提到的用例增加了一些支持。基本思想是通过any means(ADAL,REST等)获取访问令牌并将SqlConnection.AccessToken
设置为它。
至于在EF Core中使用它,在这个github issue中有一个很好的讨论,特别是comment by mgolois提供了一个简单的实现cbriaball mentions在线程中的解决方案。
以下是相同的参考
请注意,此示例使用的是Microsoft.Azure.Services.AppAuthentication库
// DB Context Class
public class SampleDbContext : DbContext
{
public SampleDbContext(DbContextOptions<TeamsDbContext> options) : base(options)
{
var conn = (System.Data.SqlClient.SqlConnection)this.Database.GetDbConnection();
conn.AccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;
}
}
// Startup.cs
services.AddDbContext<SampleDbContext>(options =>
{
options.UseSqlServer(<Connection String>);
});
连接字符串将是这样的
Server=tcp:<server_name>.database.windows.net,1433;Database=<db_name>;