我最近有some problems我认为可以通过在IIS
中调试我的ASP.NET MVC应用程序而不是使用默认的ASP.NET Development Server来帮助它。但是,当我尝试这个时,应用程序无法访问数据库服务器(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帐户并不重要是管理员,或者我在管理员上下文中运行该程序。我只是无法将另一个用户添加到数据库中。
如何解决这个问题?
答案 0 :(得分:3)
您可以更改IIS运行的用户:它是您的网站运行的ApplicationPool属性中的设置。
我们一直这样做,因为它让我们更好地控制用户访问 - NT INSTANCE / NETWORK SERVICE帐户对我来说有点太神奇......
答案 1 :(得分:1)
NETWORK SERVICE是一个特殊帐户。如果数据库服务器位于IIS服务器的另一台计算机上,则需要添加帐户:
\ $作为数据库的用户。因此,如果您在SPRINGFIELD网络上使用名为LISA的IIS服务器,则需要向您的数据库授予对SPRINGFIELD \ LISA $的访问权限。请注意美元符号,表示您的用户是机器帐户而非实际人员。
如果您的数据库服务器和IIS服务器是同一个,请授予对“NT AUTHORITY \ NETWORK SERVICE”帐户的访问权限。这是帐户的全名。这应该有用。
答案 2 :(得分:0)
你在运行非英语操作系统吗?
由于某些原因,“NT Authority \ Network Service”的帐户名已使用其他语言进行了本地化 遗憾的是,许多程序的帐户名称都硬编码为英文名称,并且在外国版本的Windows上运行时无法找到网络服务。