1

部署后,我的 ASP.NET 应用程序出现问题。一切在调试模式下运行良好,但是在部署后任何尝试连接到数据库的页面都会出现此错误:

用户 '' 登录失败。

我的 SQLConnection 字符串是:

sdb.ConnectionString = "Data Source=< SQLServerAddress >;Initial Catalog=sdb;";

本来我有

Integrated Security=true;

附加到我的连接字符串,但是这导致了类似的错误消息:

“用户 '< 域 >\< 计算机名 >$' 登录失败。”

我是 IIS 新手,但已按照指南进行设置。我的网站正在使用 DefaultAppPool ,其身份设置为 NetworkService (尽管我已经尝试过 ApplicationPoolIdentity 并且它似乎没有任何改变。)

我还在 SQL 服务器中为我的数据库添加了 NT AUTHORITY\NETWORK SERVICE 帐户作为 db_owner 权限。

在身份验证设置下,我将匿名身份验证用户身份设置为“应用程序池身份”。

我已将 C:\inetpub\wwwroot 文件夹的权限授予 NETWORK SERVICE,但这似乎也无济于事。

我真的不知道还能尝试什么。我可以看到问题一定出在权限或身份上,因为在 Visual Studio 调试中一切正常,但我不确定问题出在部署后。这是我的第一个 IIS 部署,用于我在大学的本科计算机科学项目的一个项目。我一直在谷歌搜索一天的大部分时间并尝试了许多适用的建议,但不幸的是似乎没有任何效果,而且我有点不确定现在要搜索什么来寻找解决方案。

我不确定它是否重要,但我从代码隐藏连接到我的数据库,连接代码以及我如何使用它如下:

SqlDataSource sdb = new SqlDataSource();
sdb.ConnectionString = "Data Source=< SQLServerAddress >;Initial Catalog=sdb;";
sdb.SelectCommand = "SELECT someAttribute, someOtherAtt FROM SomeTable";
dropDownList.DataSource = sdb;
dropDownList.DataTextField = "someAttribute";
dropDownList.DataValueField = "someOtherAtt";
4

2 回答 2

0

您应该为您的应用程序创建一个特定的服务帐户,一个您知道密码和用户名并且仅用于此应用程序的 AD 帐户,然后将 SQL Server 配置为允许此 AD 帐户的连接并授予适当的权限,尝试仅授予您的应用程序正确运行所需的最低权限集。

然后您回到部署应用程序的 Web 服务器并创建一个应用程序池,该池运行模拟您刚刚创建的 AD 服务帐户,最后设置您的网站/Web 应用程序以使用该应用程序池运行。

这是诀窍,祝你好运。

于 2013-03-18T23:03:10.710 回答
0

使用此链接创建 sql server 用户并在 webconfig 中的连接字符串上添加用户名和密码。

创建 SQL Server 登录

在 webconfig 文件中添加连接字符串,如下所示

<connectionStrings>
<add name="myConnectionString" connectionString="server=SQLServerAddress;database=sdb;uid=myUser;password=myPass;" />
</connectionStrings>
于 2013-03-19T04:06:50.427 回答