sql-server - System.Data.SqlClient.SqlException:使用 .NET Core 2.2 应用程序登录用户“”失败
问题描述
我正在尝试通过 IIS 版本 (10.0.14393) 发布我的 .net core 2.2 应用程序。
我已验证身份验证适用于我的帐户/登录,并且连接没有任何数据库问题。当我部署到 IIS 后,我可以进入我的主页,但是当我尝试访问不同的页面时,我得到了这种类型的错误:
SqlException: Login failed for user '{Domain}\{Machine_Name}$'.
我尝试了以下方法,但没有一个被证明可以指导我解决这个问题:
- 在我的项目和 IIS 网站上打开 Windows 身份验证并关闭匿名授权。
- 在 web config 和 application.json 中包含 windows auth 部分。
- 确保推送了正确的 web.config application.json
这可能与我的迁移有关吗?我有三个连接字符串,我的 appsettings.json 文件以这种方式设置:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"}},
"AllowedHosts": "*",
"ConnectionStrings": {
"KitLogContext": "Server={server};Database=DB;user Id=DBAdmin;Password=DB_Password;Trusted_Connection=True;MultipleActiveResultSets=true",
"PermswageContext": ""Server={server};Database=DB;user Id=DBAdmin;Password=DB_Password;Trusted_Connection=True;MultipleActiveResultSets=true",
"DATKitsContext": "Server={server};Database=DB;user Id=DBAdmin;Password=DB_Password;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost/appname.com",
"sslPort": 0
}}}
解决方案
"KitLogContext": "Server={server};Database=DB;user Id=DBAdmin;Password=DB_Password;Trusted_Connection=True;MultipleActiveResultSets=true",
您正在设置Trusted_Connection=True
,但提供一个User_ID
and Password
。这些是不兼容的连接字符串设置。
Trusted_Connection=False
如果您使用 SQL 登录名和密码,请 设置。
否则,将 AppDomain 身份添加为 SQL Server 的登录名。如果 IIS 在 SQL Server 上运行,这将是应用程序池标识。如果 SQL Server 是远程的,这可能是 IIS 服务器的计算机帐户,例如 SomeDomain\ServerName$。例如
use DB
create login [SomeDomain\ServerName$] from windows
create user [SomeDomain\ServerName$] for login [SomeDomain\ServerName$]
alter role AppUserRole add member [SomeDomain\ServerName$]
其中 AppServerRole 是自定义数据库角色,具有运行应用程序代码的最低权限。例如
use DB
create role AppServerRole
grant select, execute on schema::dbo to AppServerRole
推荐阅读
- html - Shiny bsPopover中单个文本元素的字体颜色
- python - 从具有重复行的两个列表创建列 - Pandas
- angular - 将 ngx-charts 作为单独组件导入 Angular 时出错:错误 NG8001:'ngx-charts-tree-map' 不是已知元素
- python - 无需重复代码即可添加到众多列表 Python
- reactjs - 'ChangeEvent<{}>' 类型的参数不可分配 - 与 TypeScript 反应
- python - 如何正确指定pyinstaller资源文件?
- c++ - clang 和 gcc 不实现 std::hardware_{constructive, destroyive}_interference_size 的原因是什么?
- javascript - 选择不同的值时 setInterval 无法正常工作
- build - 自托管构建代理花费太多时间来成功运行作业
- sql - 用于在 SSRS 报告中显示动态日期范围变化的 Visual Basic 代码