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

'Domain/MachineName$' being used for authentication instead of 'Domain/UserName'

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

我的问题

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

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

用户 '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

重点是,无论何时您使用 NT AUTHORITY\NETWORK SERVICE 作为您的应用程序池用户,系统都会在网络中将其转换为 DOMAIN\MachineName$

我们做的是通过将应用程序池的用户名设置为开发者的名字,使用开发者的用户名连接机器。

我在内网环境中也遇到了同样的问题。解决方案很简单,但很难抓住这个想法。通常,IT 安全负责人会为您提供活动目录服务帐户以登录您的数据库。您可以设法使用 ssms 登录,但它在 IIS 中失败,因为 IIS 选择连接 domain/computername。所以设置自定义帐户并填写您的 domain/username 和密码。

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

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