部署后SQL连接失败:"用户登录失败'' "

时间:2013-03-18 22:56:27

标签: asp.net sql iis deployment connection-string

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

用户''登录失败。

我的SQLConnection字符串是:

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

最初我有

Integrated Security=true;

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

  

“用户登录失败”&lt;域&gt; \&lt;计算机名称&gt; $'。“

我是IIS新手,但已按照指南进行设置。我的网站使用DefaultAppPool,其标识设置为NetworkService(虽然我已经尝试过ApplicationPoolIdentity,但它似乎没有任何改变。)

我已经在SQL Server中为我的数据库添加了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";

2 个答案:

答案 0 :(得分:0)

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

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

这就是诀窍,祝你好运。

答案 1 :(得分:0)

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

Create a SQL Server Login

webconfig文件中的

添加连接sting如下

<connectionStrings>
<add name="myConnectionString" connectionString="server=SQLServerAddress;database=sdb;uid=myUser;password=myPass;" />
</connectionStrings>