sur*_*esh 3 azure azure-active-directory azure-functions azure-authentication asp.net-core-2.1
不支持获取关键字:尝试通过 .NET 核心 2.1 项目中的“Active Directory Integrated”选项连接 Azure DB 时出现“身份验证”错误。
注意:我使用 EF 核心连接数据源。
Pea*_*ace 38
如果您仍然遇到问题,请确保您
Microsoft.Data.SqlClient安装了软件包,而不是System.Data.SqlClient. 它们都包含SqlConnection类,将包切换为第一个包解决了我的问题。
更新 - 16/08/2019
现已为 .NET Core 添加了 Active Directory 密码身份验证Microsoft.Data.SqlClient 1.0.19221.1-Preview
不幸的是,authentication.NET Core 中尚未完全支持该关键字。这是一个讨论这个问题的问题。
但是 .NET Core 2.2 已经添加了对此用例的一些支持,如本评论中所述。基本思想是通过任何方式(ADAL、REST 等)获取访问令牌并设置SqlConnection.AccessToken为它。
至于在 EF Core 中使用它,在这个github 问题中有一个很好的讨论,特别是mgolois的评论为 cbriaball在线程中提到的解决方案提供了一个简单的实现。
这里是一样的供参考
请注意,此示例使用的是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>);
});
Run Code Online (Sandbox Code Playgroud)
连接字符串将是这样的
Server=tcp:<server_name>.database.windows.net,1433;Database=<db_name>;
| 归档时间: |
|
| 查看次数: |
7183 次 |
| 最近记录: |