IIS - 部署 ASP.NET 网站和数据库连接
Posted
技术标签:
【中文标题】IIS - 部署 ASP.NET 网站和数据库连接【英文标题】:IIS - Deploying an ASP.NET Website and Database Connectivity 【发布时间】:2012-10-29 23:28:28 【问题描述】:我有一个用 ASP.NET 编写的网站,并试图在 Windows 7 上部署它。
我已经成功部署了网站并且它工作正常,直到我尝试访问连接到数据库的页面。显示如下错误:
“/”应用程序中的服务器错误。
无法打开登录请求的数据库“银行”。登录失败。 用户“IIS APPPOOL\ASP.NET v4.0”登录失败。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:无法打开登录请求的数据库“银行”。登录失败。 用户“IIS APPPOOL\ASP.NET v4.0”登录失败。
来源错误: 在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[SqlException (0x80131904): 无法打开登录请求的数据库“银行”。登录失败。 用户 'IIS APPPOOL\ASP.NET v4.0' 登录失败。] System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常, Boolean breakConnection) +6351920 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +412 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +53 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout) +6366878 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +6366793 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 标识,SqlConnectionString connectionOptions,对象 providerInfo,字符串 newPassword,SqlConnection owningObject,布尔重定向用户实例)+352 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项,对象 poolGroupProviderInfo,DbConnectionPool 池,DbConnection owningConnection)+831 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection,DbConnectionPool 池,DbConnectionOptions 选项)+49 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +6368598 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +78 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +2194 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +89 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +6372110 System.Data.SqlClient.SqlConnection.Open() +300 SQL_Injection_Vulnerable.LogIn.ImageButton_LogIn_Click(Object sender, ImageClickEventArgs e) in C:\Users\Matthew\Desktop\Thesis\Code\Vulnerability 6 - Information Leakage\Version 16 - Changed Connection Strings\Info_Leakage_Vulnerable\Info_Leakage_Vulnerable\LogIn.aspx.cs:51 System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +187 System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(字符串事件参数)+165 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3707
版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.272
我使用以下过程在 IIS 中部署网站:
-
转到桌面/代码/Info_Leakage_Vulnerable
复制 Info_Leakage_Vulnerable
转到 C:/inetpub/wwwroot
将文件夹粘贴到那里
打开开始菜单
输入 inetmgr
打开 HOME-PC/站点
右键单击站点,然后单击添加网站
站点名称 = Info_Leakage_Vulnerable
应用程序池 = ASP.NET 版本 4
物理路径 = C:/inetpub/wwwroot/Info_Leakage_Vulnerable 中文件夹的路径
端口 = 1000
-
右键单击网站菜单中的 Info_Leakage_Vulnerable,然后单击切换到内容视图
点击 HomePage.aspx 并点击浏览
该网站在 Visual Studio 中完美运行。从 IIS 运行网站时,我遇到的问题突然出现。请问如何解决数据库连接的问题?谢谢
【问题讨论】:
【参考方案1】:在master
数据库中执行以下查询。您必须为IIS APPPOOL\ASP.NET v4.0
创建登录名
CREATE LOGIN [IIS APPPOOL\ASP.NET v4.0] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO
CREATE LOGIN [NT AUTHORITY\NETWORK SERVICE] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO
如果您在执行查询后仍然遇到问题,请按照以下步骤操作
-
在 IIS 中从
Applications Pools
中选择ASP.NET v4.0
应用程序池
右键ASP.NET v4.0
--> 选择Advanced Settings...
在 Process Model 部分下,将 Identity 值更改为 LocalSystem
。
iisreset
希望这会有所帮助。
【讨论】:
我在 SQL Server 中执行了这行代码。我试图部署该网站,但我面临同样的问题。我将尝试您上面列出的新步骤。 我尝试了上述步骤,但由于某种原因它仍然无法正常工作:s 是的,我做到了。事实上,它出现在登录文件夹中。我得到的错误是完全相同的,除了用户已从 apppool 更改为 'NT AUTHORITY\NETWORK SERVICE'。 @Matthew,抱歉打错了。从 ApplicationPools 中选择“LocalSystem”而不是“NetworkService”-> 身份参见编辑后的帖子。 谢谢谢谢谢谢谢谢 :))))))) 你的回答帮我解决了这个难题! :)))以上是关于IIS - 部署 ASP.NET 网站和数据库连接的主要内容,如果未能解决你的问题,请参考以下文章
如何将针对 net452 项目的 ASP.NET Core 部署为 IIS 中网站的 IIS 应用程序
将 ASP.NET Core 部署到 IIS UI 和 API 到单独的网站