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

如何在Xamarin中使用Windows身份验证连接SQL Server?

Keyword not supported: 'authentication'报错根源为Xamarin环境默认使用的System.Data.SqlClient库不支持Authentication连接字符串关键字,该关键字仅在2.0及以上版本的Microsoft.Data.SqlClient库中提供支持。

解决方案

步骤1:替换依赖库

卸载项目中引用的System.Data.SqlClient,安装最新稳定版的Microsoft.Data.SqlClient,该库已经适配Xamarin的Android、iOS目标平台。

步骤2:调整MSAL令牌请求配置

请求访问令牌时,scope设置为https://database.windows.net/.default,确保拿到的令牌具备SQL Server访问权限,MSAL会自动缓存有效令牌,用户只需完成一次登录即可。

步骤3:调整数据库连接代码

不需要在连接字符串中加Authentication相关配置,直接将MSAL获取到的访问令牌赋值给SqlConnection的AccessToken属性即可,等效于桌面端Trusted_Connection=True的效果,会使用当前登录的用户身份完成数据库认证。
示例代码如下:

// 先通过MSAL获取到用户的访问令牌
var accessToken = await YourMSALService.GetUserAccessTokenAsync();

using (SqlConnection con = new SqlConnection(@"Server=servername;Database=dbname;"))
{
    // 赋值访问令牌
    con.AccessToken = accessToken;
    SqlCommand cmd = new SqlCommand("SELECT * FROM tblName", con);
    con.Open();
    // 执行业务逻辑
    con.Close();
}

如果使用的是本地部署的SQL Server而非Azure SQL,需要提前配置SQL Server实例支持Azure AD身份验证,确保用户的AD账号具备对应数据库的访问权限即可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:24:04