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 网站和数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

如何将c#做好的asp.net网站部署到iis上

iis上部署asp.net网站,访问上传的文件时被拒绝

如何将针对 net452 项目的 ASP.NET Core 部署为 IIS 中网站的 IIS 应用程序

将 ASP.NET Core 部署到 IIS UI 和 API 到单独的网站

windows server 2012 r2 iis8.5 部署 asp.net 网站

关于iis如何部署asp.net项目(找不到主页文件)?