Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SqlException:使用.NET Core 2.1的SQL Server的用户“DOMAIN\MACHINENAME$”登录失败_.net_Sql Server_Iis_Core - Fatal编程技术网

SqlException:使用.NET Core 2.1的SQL Server的用户“DOMAIN\MACHINENAME$”登录失败

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

这是我的连接字符串的内容。它是一个.NETCore2.1Web应用程序。当我在电脑上运行时,它工作正常。当我将其部署到IIS并运行它时,将发生此错误。详细错误出现在appsetting之后

"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集成身份验证中的失败。因此,当发生错误时,该连接字符串未被使用。问题是否已解决?