You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor数据库对比应用连接SQL Server时遇‘authentication’不支持错误

修复SQL Server Active Directory Password认证连接错误

问题场景

开发用于对比SQL Server数据库的Blazor应用时,在appsettings.json中配置了带Active Directory Password认证的连接字符串,通过SqlConnection创建数据库连接时抛出错误:

ArgumentException: Keyword not supported: 'authentication'

相关配置与代码

appsettings.json 配置:

"AllowedHosts": "*",
"ConnectionStrings": {
    "SourceConnectionString": "Server=tcp:myserver.database.windows.net,1433;Initial Catalog=prod;Persist Security Info=False;User ID=admin@mycompany.com;Password=123;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication='Active Directory Password';",
    "TargetConnectionString": "Server=tcp:myserver.database.windows.net,1433;Initial Catalog=dev;Persist Security Info=False;User ID=admin@mycompany.com;Password=123;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication='Active Directory Password';"
}

SourceDbContext 代码:

namespace MsSQLDatabaseComparison.DbContexts;

public class SourceDbContext
{
    private readonly IConfiguration _configuration;
    private readonly string _connectionString;

    public SourceDbContext(IConfiguration configuration)
    {
        _configuration = configuration;
        _connectionString = _configuration.GetConnectionString("SourceConnectionString");
    }

    public IDbConnection CreateConnection() => new SqlConnection(_connectionString);
}

TargetDbContext 代码:

namespace MsSQLDatabaseComparison.DbContexts;

public class TargetDbContext
{
    private readonly IConfiguration _configuration;
    private readonly string _connectionString;

    public TargetDbContext(IConfiguration configuration)
    {
        _configuration = configuration;
        _connectionString = _configuration.GetConnectionString("TargetConnectionString");
    }

    public IDbConnection CreateConnection() => new SqlConnection(_connectionString);
}

解决方案

1. 更换SQL Server驱动包

旧版的System.Data.SqlClient不支持Authentication关键字,需使用Microsoft.Data.SqlClient包:

  • 在NuGet包管理器中安装Microsoft.Data.SqlClient(推荐最新稳定版)。

2. 替换代码中的SqlConnection引用

将代码中的SqlConnection替换为Microsoft.Data.SqlClient.SqlConnection,修改后的SourceDbContext示例:

using Microsoft.Data.SqlClient;
using System.Data;
namespace MsSQLDatabaseComparison.DbContexts;

public class SourceDbContext
{
    private readonly IConfiguration _configuration;
    private readonly string _connectionString;

    public SourceDbContext(IConfiguration configuration)
    {
        _configuration = configuration;
        _connectionString = _configuration.GetConnectionString("SourceConnectionString");
    }

    public IDbConnection CreateConnection() => new SqlConnection(_connectionString);
}

TargetDbContext做同样修改即可。

3. 修正连接字符串格式

移除Authentication值的单引号,避免解析异常,修改后的连接字符串示例:

"SourceConnectionString": "Server=tcp:myserver.database.windows.net,1433;Initial Catalog=prod;Persist Security Info=False;User ID=admin@mycompany.com;Password=123;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication=Active Directory Password;"

完成以上三步后,重新运行应用即可正常使用Active Directory Password认证连接SQL Server数据库。

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:35:27