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

如何为.NET 4.8的ASP.NET MVC配置Azure SQL无密码连接并本地测试

.NET 4.8 ASP.NET MVC 实现Azure Managed Identity无密码连接Azure SQL(含本地测试)

一、依赖包安装

在Package Manager Console执行以下命令安装所需NuGet包:

Install-Package Microsoft.Azure.Services.AppAuthentication
Install-Package System.Data.SqlClient

二、连接字符串配置(web.config)

在connectionStrings节点添加无密码连接字符串,无需包含用户名/密码:

<connectionStrings>
  <add name="AzureSqlDbConnection"
       connectionString="Server=tcp:[你的SQL服务器名].database.windows.net,1433;Database=[你的数据库名];Authentication=Active Directory Managed Identity;" />
</connectionStrings>

三、核心代码实现

创建数据访问工具类,通过Managed Identity获取访问令牌并建立数据库连接:

using Microsoft.Azure.Services.AppAuthentication;
using System.Data;
using System.Data.SqlClient;
using System.Threading.Tasks;

public class AzureSqlDataAccess
{
    private readonly string _connString;

    public AzureSqlDataAccess(string connectionString)
    {
        _connString = connectionString;
    }

    // 示例:执行查询并返回DataTable
    public async Task<DataTable> FetchSampleDataAsync()
    {
        var tokenProvider = new AzureServiceTokenProvider();
        // 获取Azure SQL服务的访问令牌
        string accessToken = await tokenProvider.GetAccessTokenAsync("https://database.windows.net/");

        using (var conn = new SqlConnection(_connString))
        {
            conn.AccessToken = accessToken;
            await conn.OpenAsync();

            using (var cmd = new SqlCommand("SELECT TOP 5 * FROM [你的表名]", conn))
            {
                var dataTable = new DataTable();
                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    dataTable.Load(reader);
                }
                return dataTable;
            }
        }
    }
}

在Controller中调用示例:

using System.Web.Mvc;
using System.Configuration;
using System.Threading.Tasks;

public class HomeController : Controller
{
    public async Task<ActionResult> Index()
    {
        var connString = ConfigurationManager.ConnectionStrings["AzureSqlDbConnection"].ConnectionString;
        var dataAccess = new AzureSqlDataAccess(connString);
        var sampleData = await dataAccess.FetchSampleDataAsync();
        
        return View(sampleData);
    }
}

四、本地测试配置

本地开发时,Managed Identity会自动使用你的Azure AD账户身份,需完成以下步骤:

  1. 权限配置:确保你的Azure AD账户被授予Azure SQL数据库的访问权限(例如添加到拥有db_datareader/db_datawriter角色的AD组,或直接分配对应角色)
  2. 身份验证:
    • 方式一:安装Azure CLI,执行az login登录你的Azure账户
    • 方式二:在Visual Studio中登录你的Azure账户(路径:工具→选项→Azure服务身份验证)
  3. 测试验证:启动项目后,Controller会通过你的AD账户身份获取令牌,连接Azure SQL并返回查询数据

关键注意事项

  • 部署到Azure App Service时,需确保已启用系统分配/用户分配的Managed Identity,并将该Identity添加到Azure SQL的权限列表中
  • 若本地获取令牌失败,检查Azure CLI/VS的登录账户是否拥有目标数据库的访问权限
  • Microsoft.Azure.Services.AppAuthentication包已针对.NET Framework 4.8做兼容支持,无需升级框架

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:35:18