ASP.Net Core MVC部署IIS后数据库访问报错:不支持'trust server certificate'
解决ASP.NET Core MVC部署到IIS后数据库连接报错问题
核心问题定位
报错提示「Keyword not supported: 'trust server certificate'」,本质是数据库连接字符串的关键字格式错误,或者当前项目使用的数据库驱动不识别该关键字的写法。
具体解决步骤
修正连接字符串关键字格式:
连接字符串参数名不能包含空格,把「Trust Server Certificate」改为无空格的TrustServerCertificate,配合Encrypt参数使用,正确写法示例:Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;Encrypt=True;TrustServerCertificate=True;- 若用旧版
System.Data.SqlClient驱动:TrustServerCertificate需和Encrypt=True搭配使用; - 若用新版
Microsoft.Data.SqlClient驱动:该参数在Encrypt=True时生效,2.0及以上版本正式支持此关键字。
- 若用旧版
确认数据库驱动版本:
打开项目的csproj文件检查引用包:- 若引用
Microsoft.Data.SqlClient,确保版本在2.0及以上; - 若引用
System.Data.SqlClient,建议升级到4.5及以上版本,或直接替换为Microsoft.Data.SqlClient(微软官方推荐的新版驱动)。
- 若引用
同步部署环境的连接字符串配置:
不要只修改本地配置,部署到IIS后需确认:- 服务器站点根目录下的
appsettings.json或web.config中,连接字符串已同步修正; - 若使用环境变量存储连接字符串,需检查服务器端的环境变量配置是否正确。
- 服务器站点根目录下的
验证连接字符串有效性:
可以用代码生成标准格式的连接字符串,避免手动输入出错:var builder = new SqlConnectionStringBuilder(); builder.DataSource = "myServerAddress"; builder.InitialCatalog = "myDataBase"; builder.UserID = "myUsername"; builder.Password = "myPassword"; builder.Encrypt = true; builder.TrustServerCertificate = true; string validConnStr = builder.ToString();将生成的字符串直接复制到项目配置中即可。
内容的提问来源于stack exchange,提问作者user21185171
相关产品推荐
相关产品推荐

