' /'中的服务器错误应用程序 - 用户

时间:2016-05-18 11:14:32

标签: c# asp.net sql-server asp.net-mvc database

我们有一个连接到我们数据库的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中,但在本地调试应用程序时无法找到此错误。

1 个答案:

答案 0 :(得分:0)

好的事实证明问题是我们的IIS管理器托管我们的Web应用程序的服务没有访问数据库的正确权限。要解决此问题,需要进入SQL Manager并为我们的应用程序池添加登录AND用户...

  • 打开SQL Server Management Studio并连接到目标服务器
  • 在您的服务器下展开Security文件夹,右键单击Login并选择New Login ...

enter image description here

  • 启用Windows身份验证。登录名应为IIS APPPOOL \ [在IIS上托管的服务名称]

  • 单击屏幕左侧的“服务器角色”链接,确保选中了public和sysadmin。

  • 点击屏幕左侧的用户映射链接,然后选择您希望您的网络服务能够覆盖的数据库。
  • 单击左侧的状态链接,确保将设置设置为授予连接到数据库的权限并启用登录。

现在为您要访问的数据库创建一个用户...

  • 展开您选择的数据库并展开安全文件夹(不要与上面的安全文件夹混淆!)。右键单击它并选择新用户...

enter image description here

  • 确保用户类型是带登录的SQL用户(可能会根据项目访问数据库的方式而改变)
  • 在“登录名”框的左侧,会出现一个带有...的按钮,单击它

enter image description here

  • 这会打开一个新窗口。单击它,然后选择您之前创建的登录名。好吧所有的窗户。

  • 将登录名复制并粘贴为用户名

  • 在左侧选择Owned Schemas并确保选择db_reader和db_writer

  • 在左侧选择Membership并确保选择了db_reader和db_writer

  • 单击“确定”以创建用户;托管服务的应用池现在应该可以访问数据库