我正在尝试通过 C# 代码使用 Azure AD 凭据连接到 Azure 数据库(代码如下)。它在我的系统上运行良好。但是当我将它部署到32位VM时,它显示错误
“不支持关键字:身份验证”。
VM 安装了 .Net Framework 4.5(但未安装 Visual Studio)。应用程序面向 .Net Framework 4.5。
根据我的观察,框架 2.0 的 system.data 不支持 SQLConnection 类的身份验证关键字。但我的应用程序的目标是 4.5 ,因此安装了 4.5 后它应该可以正常工作。任何人都可以帮助解决它。下面是我的代码
class Program
{
static void Main(string[] args)
{
try
{
string ConnectionString =
@"Data Source=mydatabase.database.windows.net; Authentication=Active Directory Password; [email protected] /cdn-cgi/l/email-protection; PWD=Test@pswd";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
Console.WriteLine("connected");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
}
这个答案是关于 dotnet core 而不是 .NET Framework 4.5/6,因此它不会直接回答您的问题。但是,它可能会帮助您向客户部署代码。
我在尝试从 dotnet-core 连接时遇到了相同的错误。来自微软 https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-2-2#data:
从 .NET Core 2.2 开始,Azure Active Directory 颁发的访问令牌可用于对 Azure SQL 数据库进行身份验证。为了支持访问令牌,AccessToken https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.accesstoken#System_Data_SqlClient_SqlConnection_AccessToken属性已添加到SqlConnection https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection班级。要利用 AAD 身份验证,请下载 4.6 版System.Data.SqlClient
NuGet 包。为了使用该功能,您可以使用以下命令获取访问令牌值Active Directory 身份验证库 https://github.com/AzureAD/azure-activedirectory-library-for-dotnet对于 .NET 中包含的Microsoft.IdentityModel.Clients.ActiveDirectory https://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory/NuGet 包。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)