我知道这几乎是一个副本: ASP.NET 和 SQLServer2008中的错误“ Login false for user & # 39; NT AUTHORITY IUSR & # 39;”和 用户在外部项目/类库中使用 LINQ 登录失败,但有些东西不加起来比其他应用程序在我的服务器上,我不知道为什么。
使用的盒子:
网络信箱
SQL Box
SQL 测试框
我的申请:
我有一个 ASP.NET Web 应用程序,它引用了一个使用 LINQ-to-SQL 的类库。在类库中正确设置连接字符串。根据 用户在外部项目/类库中使用 LINQ 登录失败,我还将这个连接字符串添加到 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" />
此连接通过将其添加到服务器资源管理器确认可以工作。这是连接字符串 my。Dbml 文件正在使用。
问题是:
我得到以下错误:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
现在引用这个 ASP.NET 和 SQLServer2008中的错误“ Login false for user & # 39; NT AUTHORITY IUSR & # 39;”它说,这是真正的本地网络服务和使用任何其他非域名将不起作用。
但是我很困惑,因为我已经检查了 SQL Box 和 SQL Test Box SQL Management Studio,它们都在 Security-> Logins 下面有 NT AUTHORITY/NETWORK SERVICE,在数据库级别,它没有列在 Security-> Users 下面,但是在数据库级别 Security-> Users 我在连接字符串中显示了用户。
在网络服务器上的 NTFS 级别上,权限具有 NETWORKSERVICE 的完全控制权。
我感到困惑的原因是因为在我的 Web 服务器上有许多其他 Web 应用程序,在 SQL Box 和 SQL Test Box 上都有引用数据库,而且它们都可以工作。但是,除了使用类库之外,我找不到它们与当前应用程序之间的区别。这重要吗?检查 NTFS 权限、在服务器和数据库级别设置安全登录、连接字符串和连接方法(SQLServer 凭据)以及 IIS 应用程序池和其他文件夹选项都是相同的。
为什么这些应用程序不需要将机器名 $添加到我的任何一个 SQL 框的权限中就可以工作?但是,这就是一个链接告诉我要做的,以解决这个问题。