4

我最近遇到了一些问题,我认为调试我的 ASP.NET MVC 应用程序IIS而不是使用默认的 ASP.NET 开发服务器可能会有所帮助。但是,当我尝试这样做时,应用程序无法访问数据库服务器(MS SQL Server 2008 Express)——尽管它在开发服务器上运行良好。

我得到的错误是

Cannot open database 'myDbName' requested by the login. The login failed. Login failed for user 'NT INSTANCE/NETWORK SERVICE'.

我认为它以前可以工作,因为开发服务器通过我的用户帐户访问数据库,而不是通过像IIS.

我尝试将用户添加NETWORK SERVICE到数据库,但事实证明我没有这样做的用户权限 - 我登录到服务器的 Windows 帐户是管理员,或者我运行管理员上下文中的程序。我只是无法将其他用户添加到数据库中。

我该如何解决这个问题?

4

3 回答 3

3

您可以更改运行 IIS 的用户:它是您的网站在其下运行的 ApplicationPool 的属性中的设置。

我们一直这样做,因为它使我们能够更好地控制用户访问 - NT INSTANCE/NETWORK SERVICE 帐户对我来说有点太神奇了......

于 2009-02-10T23:41:24.620 回答
1

NETWORK SERVICE 是一个特殊帐户。如果您的数据库服务器位于 IIS 服务器的另一台计算机上,则需要添加帐户:

\$ 作为数据库的用户。因此,如果您在 SPRINGFIELD 网络上名为 LISA 的 IIS 服务器上,则需要授予对 SPRINGFIELD\LISA$ 数据库的访问权限。请注意美元符号,它表示您的用户是机器帐户,而不是真实的人。

如果您的数据库服务器和 IIS 服务器是同一台服务器,请授予对帐户“NT AUTHORITY\NETWORK SERVICE”的访问权限。这是帐户的全名。这应该有效。

于 2009-02-10T23:38:46.543 回答
0

您正在运行非英语操作系统吗?

由于某些原因,“NT Authority\Network Service”的帐户名称已本地化为其他语言。
可悲的是,许多程序将帐户名硬编码为英文名称,并且在外国版本的 Windows 上运行时找不到网络服务。

于 2009-05-07T12:58:25.993 回答