gpt4 book ai didi

.net - 用户 'DOMAIN\MACHINENAME$'登录失败

转载 作者:行者123 更新时间:2023-12-01 16:47:52 31 4
gpt4 key购买 nike

我知道这几乎是重复的:The error "Login failed for user 'NT AUTHORITY\IUSR'" in ASP.NET and SQL Server 2008Login failed for user 'username' - System.Data.SqlClient.SqlException with LINQ in external project / class library但与我服务器上的其他应用程序相比,有些事情并没有加起来,我不确定为什么。

正在使用的盒子:

网络框
SQL 框
SQL测试盒

我的申请:

我有一个 ASP.NET Web 应用程序,它引用使用 LINQ-to-SQL 的类库。在类库中正确设置连接字符串。根据Login failed for user 'username' - System.Data.SqlClient.SqlException with LINQ in external project / class library我还将此连接字符串添加到 Web 应用程序中。

连接字符串使用 SQL 凭据(在 Web 应用程序和类库中):

 <add name="Namespace.My.MySettings.ConnectionStringProduction"
connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
providerName="System.Data.SqlClient" />

通过将其添加到服务器资源管理器来确认此连接正常工作。这是我的 .dbml 文件正在使用的连接字符串。

问题:

我收到以下错误:

System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.

现在引用这个The error "Login failed for user 'NT AUTHORITY\IUSR'" in ASP.NET and SQL Server 2008它说这实际上是本地网络服务,使用任何其他非域名将不起作用。

但是我很困惑,因为我检查了 SQL Box 和 SQL Test Box SQL Management Studio,并且在数据库级别的安全性 -> 登录下都有 NT AUTHORITY/NETWORK SERVICE,这不是未在安全性 -> 用户下列出,但在数据库级别安全性 -> 用户中我将用户显示在连接字符串中。

在 Web 服务器上的 NTFS 级别,权限具有 NETWORK SERVICE 的完全控制权。

我感到困惑的原因是我的 Web 服务器上有许多其他 Web 应用程序,它们引用 SQL Box 和 SQL Test Box 上的数据库,并且它们都可以工作。但除了我使用类库之外,我找不到它们和我当前的应用程序之间的区别。这有关系吗?检查 NTFS 权限、在服务器和数据库级别设置安全登录、连接字符串和连接方法(SQL Server 凭据)以及 IIS 应用程序池和其他文件夹选项,都是相同的。

为什么这些应用程序无需将 machinename$ 添加到我的任一 SQL 框的权限中即可运行?但这就是一个链接告诉我要解决这个问题的方法。

最佳答案

NETWORK SERVICE 和 LocalSystem 将始终将自己验证为本地相应帐户(内置\网络服务和内置\系统),但两者都将验证为远程计算机帐户。

如果您看到诸如用户“DOMAIN\MACHINENAME$”登录失败之类的失败,则意味着作为 NETWORK SERVICE 或 LocalSystem 运行的进程已访问远程资源,已将自身验证为计算机帐户并被拒绝授权。

典型示例是在应用程序池中运行的 ASP 应用程序,设置为使用 NETWORK SERVICE 凭据并连接到远程 SQL Server:应用程序池将作为运行应用程序池的计算机进行身份验证,并且这是需要授予访问权限的计算机帐户。

当计算机帐户的访问被拒绝时,必须向该计算机帐户授予访问权限。如果服务器拒绝登录“DOMAIN\MACHINE$”,则您必须将登录权限授予“DO​​MAIN\MACHINE$”而不是NETWORK SERVICE。授予对 NETWORK SERVICE 的访问权限将允许作为 NETWORK SERVICE 运行的本地进程进行连接,而不是远程进程,因为您猜到了,远程进程将作为 DOMAIN\MACHINE$ 进行身份验证。

如果您希望 asp 应用程序作为 SQL 登录名连接到远程 SQL Server,并且您收到有关 DOMAIN\MACHINE$ 的异常,则意味着您在连接字符串中使用了集成安全性。如果这是意外的,则意味着您搞砸了所使用的连接字符串。

关于.net - 用户 'DOMAIN\MACHINENAME$'登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806438/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com