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

部署.NET 6 Razor Pages的ASP.NET应用时数据库登录失败求助

问题分析与解决方案

问题原因

你遇到的Login failed for user 'ERTEBATCITFOOD$'错误,核心原因是连接字符串使用了Integrated Security=True(Windows身份验证),但IIS应用运行的身份没有SQL Server的访问权限:

  • 本地运行时,应用用的是你当前登录的Windows账户,这个账户大概率已经被授予了数据库访问权限,所以一切正常
  • 部署到IIS后,应用默认使用IIS应用池的身份运行,错误里的ERTEBATCITFOOD$是你的服务器机器账户(机器名后加$),这个账户没有被配置为SQL Server的合法登录用户,也没有food数据库的访问权限

解决方案

方案1:给机器账户授予SQL Server权限

  1. 打开SQL Server Management Studio(SSMS),登录到citfood对应的SQL Server实例
  2. 展开安全性 > 登录名,右键选择新建登录名
  3. 选择Windows身份验证,在“登录名”输入框中填写ERTEBATCITFOOD$(你的服务器机器名+$)
  4. 切换到用户映射选项卡,勾选food数据库,然后在下方“数据库角色成员身份”中勾选必要的权限(比如db_datareader、db_datawriter,根据你的应用操作需求选择)
  5. 点击确定保存设置

方案2:改用SQL Server身份验证

修改连接字符串,使用专门的SQL Server账户(而非Windows身份):

string connectionString = "Data Source=citfood;Initial Catalog=food;User ID=你的SQL账户名;Password=你的SQL账户密码;";
  • 确保这个SQL账户已经在SQL Server中创建,并且被授予food数据库的相应访问权限

方案3:修改IIS应用池的运行身份

  1. 打开IIS管理器,找到你的网站对应的应用池
  2. 右键应用池,选择高级设置
  3. 在“进程模型”下找到标识,点击右侧的“...”按钮
  4. 选择一个已经拥有SQL Server访问权限的Windows账户(比如域账户、本地管理员账户,前提是该账户已在SQL Server中配置登录权限)
  5. 保存设置后,重启应用池和网站

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:50:40