我们有一个连接到我们数据库的ASP.NET应用程序。我们使用XML配置文件处理此连接,该文件包含有关如何访问数据库(用户名,密码等)的信息。但是,当我们尝试访问某些网页时,我们会看到黄色的死亡屏幕和一条消息Login failed for user xxx
。
在本地作为localhost运行时,不会出现此错误。当我们将服务部署到服务器时,会出现此错误消息。我们的连接字符串如下所示:
<add key="DBConnection" value="Data Source=[ServerNameHere];Initial Catalog=[DBNameHere];MultipleActiveResultSets=True;User Id=[usernamehere];Password=[passwordhere];" />
对于我们的SQL Server,我们已启用SQL Server和Windows身份验证模式。我已经检查了sa帐户的登录属性,并更改了#34;连接到数据库引擎的权限&#34;设置为&#34; Grant&#34;和#34;登录&#34;设置为&#34;已启用&#34;,两者仍然存在相同的问题。服务器和数据库也在同一台机器上。
对于遇到同样问题的其他人来说,这些是最常见的解决方案,我们还可以尝试解决这个问题吗?
最后一点需要注意的是,当我们得到Loging failed for user xxx
时,xxx
是机器的名称,所以当我们看到黄色的死亡屏幕时它看起来像Domain\MachineName$
。 / p>
编辑:抛出的异常如下:
System.Data.SqlClient.SqlException: Login failed for user 'Domain\MachineName$'.
我已经停用&#34;继续例外&#34;在我的Visual Studio中,但在本地调试应用程序时无法找到此错误。
答案 0 :(得分:0)
好的事实证明问题是我们的IIS管理器托管我们的Web应用程序的服务没有访问数据库的正确权限。要解决此问题,需要进入SQL Manager并为我们的应用程序池添加登录AND用户...
启用Windows身份验证。登录名应为IIS APPPOOL \ [在IIS上托管的服务名称]
单击屏幕左侧的“服务器角色”链接,确保选中了public和sysadmin。
现在为您要访问的数据库创建一个用户...
这会打开一个新窗口。单击它,然后选择您之前创建的登录名。好吧所有的窗户。
将登录名复制并粘贴为用户名
在左侧选择Owned Schemas并确保选择db_reader和db_writer
在左侧选择Membership并确保选择了db_reader和db_writer
单击“确定”以创建用户;托管服务的应用池现在应该可以访问数据库