[更新1]
我可以使用以下连接字符串使其工作
Server=tcp:mydatabaseserver.database.windows.net,1433;Initial Catalog=mydbname
并实现本文提到的拦截器。
这证明Azure已正确配置,并且问题出在应用程序中的某个位置(可能是缺少软件包?)。
无论如何,我仍然希望能够更改连接字符串并在AAD身份验证和sql身份验证之间切换,而无需在应用程序中添加其他逻辑。
[/更新1]
我在Azure WebApp上使用EF Core 3.1.4,并且我想使用分配给该应用程序的Azure AD身份进行身份验证,但是遇到以下异常:
ArgumentException: Invalid value for key 'authentication'.
Microsoft.Data.Common.DbConnectionStringBuilderUtil.ConvertToAuthenticationType(string keyword, object value)
这是连接字符串:
{
"ConnectionStrings": {
"Admin": "Server=tcp:mydatabaseserver.database.windows.net,1433;Initial Catalog=mydbname;Authentication=Active Directory Integrated"
}
}
我使用以下代码初始化上下文:
var connectionString = this.Configuration.GetConnectionString("Admin");
services.AddDbContext<NetCoreDataContext>(builder => builder.UseSqlServer(connectionString));
该Microsoft.Azure.Services.AppAuthentication
包也已导入(版本1.5.0)
欢迎来到Net框架/运行时地狱。
目前ActiveDirectoryIntegrated
和ActiveDirectoryInteractive
身份验证选项不支持磊科的应用程序。
原因是从v3.0开始,EF Core使用Microsoft.Data.SqlClient而不是System.Data.SqlClient。当前,Microsoft.Data.SqlClient的最新版本(也是预览版)仅针对NET Framework支持这两个选项。
您可以在他们的问题跟踪器中看到类似的问题,为什么SqlClient for .Net Core不允许使用身份验证方法“ Active Directory交互式”?#374以及SqlAuthenticationMethod枚举的文档- ActiveDirectoryIntegrated
(强调是我的):
身份验证方法使用Active Directory集成。使用集成的Active Directory通过集成的Windows身份验证连接到SQL数据库。仅适用于.NET Framework应用程序。
话虽如此,请使用Authentication
解决方法,或等待最终为Net Core实施此选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句