使用 AAD 用户凭据解析连接字符串时出错

Error parsing connection string with AAD user credentials

在 Azure 帐户上,我创建了一个 AAD 用户。
我创建了 Azure SQL 数据库并将新创建的 AAD 用户分配为服务器管理员。
服务器同时具有 AAD 帐户登录和 SQL 服务器登录。
我测试了使用 AAD 用户通过 SSMS 连接到服务器,它有效。我测试了将其他 AAD 用户添加到数据库,它有效(在 SSMS 中)。

现在我正在测试从控制台应用程序到数据库的连接。
我想使用 AAD 用户凭据连接到数据库。
控制台应用程序应该在没有用户登录的情况下工作,所以我想将用户硬编码到连接字符串中。

我的连接字符串是:

string connectionString = @"Server=tcp:test-server.database.windows.net,1433; Authentication=Active Directory Password; Database=mydb; User Id=aad_user_name@myaccount.onmicrosoft.com; Password=mypassword";

控制台在尝试创建 SqlConnection 时立即中断,据我在解析连接字符串中所见。

System.ArgumentException: Keyword not supported: 'authentication'.
   at System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 parsetable, String connectionString, Boolean buildChain, Dictionary`2 synonyms, Boolean firstKey)
   at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary`2 synonyms)
   at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
   at System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key)
   at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
   at System.Data.SqlClient.SqlConnection..ctor(String connectionString)
   at MyApp.Program.TestDb() in C:\path\Program.cs:line 28

项目文件:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Data.SqlClient" Version="4.1.0" />
    <PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
  </ItemGroup>

</Project>

所以,我使用的是最新的 .NET 6,Microsoft.Data.SqlClient 和 System.Data.SqlClient。

我明白了。我根本不应该使用 System.Data.SqlClient 库。 Microsoft.Data.SqlClient lib 中有新的 SqlConnection 实现并且它有效。

问题是 VS 2022 建议使用 System.Data.SqlClient。