'Domain / MachineName $'用于身份验证而不是'Domain / UserName'

时间:2015-02-21 10:49:50

标签: c# asp.net sql-server authentication iis-7

以下帖子可能看起来相同,但在尝试提供所有解决方案作为答案后,我无法解决问题。 (Login failed for user 'DOMAIN\MACHINENAME$'

我的问题

我正在部署一个asp.net网络应用程序,在我的IIS7开发服务器上的 Windows网络中启用了表单身份验证。我的SQL Server部署在同一网络中的远程盒子上,为远程连接打开了必要的TCP端口。所有域用户都可以访问SQL Server中的必要数据库。

现在,当我尝试运行我的网络应用程序时,出现以下错误:

用户' DOMAIN \ MachineName $' 的登录失败。

我已经在SQL服务器中为 NT AUTHORITY \ NETWORK SERVICE 提供了足够的权限。

想要在开发人员不断变化的情况下向SQL服务器中的' DOMAIN \ MachineName $' 授予任何权限用于各种测试目的的机器名称。

我使用的连接字符串是:

"Server=SQL-SERVER;Initial Catalog=MyDatabase;Integrated Security=SSPI;Persist Security Info=False"

SQL提供程序是System.Data.SqlClient

启用匿名和表单身份验证,因为我的网络应用包含login.aspx

2 个答案:

答案 0 :(得分:5)

关键是,无论何时使用NT AUTHORITY\NETWORK SERVICE作为应用程序池用户,系统都会将此网络转换为DOMAIN\MachineName$

我们所做的是通过将应用程序池的用户名设置为开发人员的名称,使用开发人员的用户名连接到计算机。

答案 1 :(得分:0)

我在Intranet环境中也遇到了相同的问题。解决方案很简单,但很难把握。通常,IT安全主管将为您提供活动目录服务帐户以登录到数据库。您可以使用ssms登录,但是在IIS中失败,因为IIS选择使用域/计算机名进行连接。因此,请设置自定义帐户,然后填写您的域/用户名和密码。

  1. 在IIS管理器中,选择Web应用程序使用的应用程序池,或者 如果使用默认值,则创建一个新值。
  2. 单击右侧操作栏中的“高级设置”。在“流程模型”下,单击 “身份”值,然后选择“自定义帐户”。
  3. 单击“编辑”,然后输入用户帐户的域/用户名和密码。
  4. 如果正确输入所有信息,则弹出窗口将成功关闭 没有任何错误信息。
  5. 之后,停止您的网站。
  6. 再次返回您的应用程序池,然后单击“回收”。
  7. 启动您的网站。

就是这样。您的Web应用程序将成功从IIS连接。