ADO.Net(Azure AD)错误"不支持关键字:身份验证"

Vin*_*mar 6 ado.net c#-4.0

我试图通过c#代码(代码如下)使用Azure AD凭据连接到Azure数据库.它在我的系统上工作正常.但是当我将它部署到32位VM时,它会显示错误

"不支持关键字:身份验证".

VM安装了.Net framework 4.5(但不是Visual Studio).应用程序的目标是.Net Framework 4.5.

根据我的观察,框架2.0的system.data不支持SQLConnection类的authentication关键字.但我的应用程序是针对4.5,所以它应该可以正常安装4.5.任何人都可以帮助解决它.以下是我的代码

class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string ConnectionString =
      @"Data Source=mydatabase.database.windows.net; Authentication=Active Directory Password; UID=user.name@microsoft.contoso.com; PWD=Test@pswd";
                SqlConnection conn = new SqlConnection(ConnectionString);
                conn.Open();
                Console.WriteLine("connected");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Eri*_*ick 3

这个答案是关于 dotnet core 而不是 .NET Framework 4.5/6,因此它不会直接回答您的问题。但是,它可能会帮助您向客户部署代码。

我在尝试从 dotnet-core 连接时遇到了相同的错误。来自微软

从 .NET Core 2.2 开始,Azure Active Directory 颁发的访问令牌可用于对 Azure SQL 数据库进行身份验证。为了支持访问令牌,该AccessToken属性已添加到SqlConnection类中。要利用 AAD 身份验证,请下载System.Data.SqlClientNuGet 包的 4.6 版。为了使用该功能,您可以使用NuGet 包中包含的适用于 .NET 的Active Directory 身份验证库Microsoft.IdentityModel.Clients.ActiveDirectory获取访问令牌值。