部署之后,我的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";
答案 0 :(得分:0)
您应该为您的应用程序创建一个特定的服务帐户,一个您知道密码和用户名的AD帐户,并且它仅用于此应用程序,然后您将SQL Server配置为允许连接此AD帐户并授予适当的权限权限,尝试仅授予应用程序正确运行所需的最低权限集。
然后,您将返回到已部署应用程序的Web服务器,并创建一个应用程序池,该池运行模拟您刚刚创建的AD服务帐户,最后设置您的网站/ Web应用程序以与该应用程序池一起运行。这就是诀窍,祝你好运。
答案 1 :(得分:0)
使用此链接创建sql server用户,并在webconfig中的连接字符串上添加用户名和密码。
webconfig文件中的添加连接sting如下
<connectionStrings>
<add name="myConnectionString" connectionString="server=SQLServerAddress;database=sdb;uid=myUser;password=myPass;" />
</connectionStrings>