SqlException:使用.NET Core 2.1的SQL Server的用户“DOMAIN\MACHINENAME$”登录失败
这是我的连接字符串的内容。它是一个.NETCore2.1Web应用程序。当我在电脑上运行时,它工作正常。当我将其部署到IIS并运行它时,将发生此错误。详细错误出现在appsetting之后SqlException:使用.NET Core 2.1的SQL Server的用户“DOMAIN\MACHINENAME$”登录失败,.net,sql-server,iis,core,.net,Sql Server,Iis,Core,这是我的连接字符串的内容。它是一个.NETCore2.1Web应用程序。当我在电脑上运行时,它工作正常。当我将其部署到IIS并运行它时,将发生此错误。详细错误出现在appsetting之后 "Testing2012Context": "Server=Server;Database=Testing2012;User ID=User;Password=Pwd;Trusted_Connection=False;MultipleActiveResultSets=true" 错误: SqlExcepti
"Testing2012Context": "Server=Server;Database=Testing2012;User ID=User;Password=Pwd;Trusted_Connection=False;MultipleActiveResultSets=true"
错误:
SqlException:使用.NET Core 2.1的SQL Server的用户“DOMAIN\MACHINENAME$”登录失败
...
System.Data.SqlClient.SqlInternalConnectionDS..ctorDbConnectionPoolIdentity
标识、SqlConnectionString连接选项、SqlCredential
凭证、对象providerInfo、字符串newPassword、SecureString
newSecurePassword、bool redirectedUserInstance、SqlConnectionString
用户连接选项,SessionData重新连接SessionData,bool
applyTransientFaultHandling
错误背后的原因是iis应用程序池正在本地计算机帐户下运行。此帐户没有访问SQL Server的任何权限 要解决此问题,您可以尝试以下解决方案: 1打开iis管理器。选择您的应用程序池 2单击“操作”窗格中的“高级设置” 3在流程模型下,单击“标识”值并选择“自定义帐户”或使用网络服务帐户 4输入您的域用户名和密码,然后单击“确定”应用更改 5应用更改后,选择应用程序池并单击“回收” 6重新启动您的站点 或 向SQL Server数据库授予DOMAIN\SERVERNAME$用户id读写权限。应用程序池需要在NetworkService的标识下运行。
现在的问题是如何在SQL Server中添加DOMAIN\SERVERNAME$username作为新登录名?这对你们中的许多人来说可能是显而易见的,但它让包括这里的一些DBA在内的一些人绊倒了。关键是在登录名:文本框中键入DOMAIN\SERVERNAME$,而不进行搜索。立即单击“确定”按钮。然后,您应该能够执行其余操作,将角色等添加到新登录名中。但错误是不言自明的,您使用的登录凭据在生产服务器上无效。此外,除非您的用户ID为“DOMAIN\MACHINENAME$”,否则您似乎没有发布正确的连接字符串,因为它似乎充当集成安全性而不是用户名/密码。该连接字符串指定SQL身份验证,并且错误来自Windows集成身份验证中的失败。因此,当发生错误时,该连接字符串未被使用。问题是否已解决?