如何为.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账户身份,需完成以下步骤:
- 权限配置:确保你的Azure AD账户被授予Azure SQL数据库的访问权限(例如添加到拥有
db_datareader/db_datawriter角色的AD组,或直接分配对应角色) - 身份验证:
- 方式一:安装Azure CLI,执行
az login登录你的Azure账户 - 方式二:在Visual Studio中登录你的Azure账户(路径:工具→选项→Azure服务身份验证)
- 方式一:安装Azure CLI,执行
- 测试验证:启动项目后,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
相关产品推荐
相关产品推荐

