本教程系列介绍如何使用 Visual Studio 2017 将 ASP.NET Web 应用程序部署到Azure App 服务 Web 应用或第三方托管提供程序。 有关该系列的信息,请参阅 该系列中的第一个教程。
有关部署到 Azure 的当前版本,请参阅 在 Azure 中创建 ASP.NET Core Web 应用。
概述
在本教程中,你将在本地计算机上将 ASP.NET Web 应用程序部署到 Internet Information Server (IIS)。
通常,在开发应用程序时,可以在 Visual Studio 中运行并对其进行测试。 默认情况下,Visual Studio 2017 中的 Web 应用程序项目使用 IIS Express 作为开发 Web 服务器。 IIS Express 的行为与 Visual Studio 开发服务器(也称为 Cassini)相比,默认情况下 Visual Studio 2017 使用的 IIS 更像完整 IIS。 但两个开发 Web 服务器都与 IIS 完全相同。 因此,应用可以在 Visual Studio 中正确运行和测试,但在部署到 IIS 时失败。
可以通过两种方式可靠地测试应用程序:
使用稍后使用的相同过程将应用程序部署到开发计算机上的 IIS,以便将其部署到生产环境。
可以在运行 Web 项目时将 Visual Studio 配置为使用 IIS,但不会测试部署过程。 此方法验证部署过程,并且应用程序在 IIS 下正常运行。
将应用程序部署到类似于生产环境的测试环境。
这些教程的生产环境在 Azure App 服务 中Web 应用。 理想的测试环境是在 Azure 服务中创建的其他 Web 应用。 虽然它的设置方式与生产 Web 应用相同,但你只会使用它进行测试。
若要部署到开发计算机上的 IIS,请确认已安装 IIS 和 Web 部署。 默认情况下,Visual Studio 安装 Web 部署,但默认 Windows 10、Windows 8 或 Windows 7 配置中不包括 IIS。 如果已安装 IIS 并且默认应用程序池已设置为 .NET 4,请跳到 下一部分。
建议使用 Web 平台安装程序(WPI) 安装 IIS 和 Web 部署。 WPI 会安装建议的 IIS 配置,包括 IIS 和 Web 部署先决条件(如有必要)。
如果已安装 IIS、Web 部署或其任何所需组件,WPI 将仅安装缺少的内容。
使用 Web 平台安装程序安装 IIS 和 Web 部署:
你将看到指示将安装 IIS 7 的消息。 此链接适用于 Windows 8 中的 IIS 8;但对于 Windows 8 及更高版本,请完成以下步骤,确保已安装 ASP.NET 4.7:
如果只看到两个应用程序池并且两者都设置为 .NET Framework 2.0,请在 IIS 中安装 ASP.NET 4。
对于 Windows 8 或更高版本,请参阅上一部分的说明,确保已安装 ASP.NET 4.7,或了解如何 在 Windows 8 和 Windows Server 2012 上安装 ASP.NET 4.5。 对于 Windows 7,在 Windows 开始菜单中右键单击命令提示符并选择“以管理员身份运行”,打开命令提示符窗口。 运行以下命令 运行 aspnet_regiis.exe 以在 IIS 中安装 ASP.NET 4。 (在 32 位系统中,将“Framework64”替换为“Framework”。
cd %windir%\Microsoft.NET\Framework64\v4.0.30319
aspnet_regiis.exe –i
LocalDB 不设计用于 IIS,因此测试环境必须安装 SQL Server Express。 如果使用 Visual Studio 2010 SQL Server Express,则默认已安装它。 如果使用的是 Visual Studio 2012 或更高版本,请安装 SQL Server Express。
IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
CREATE LOGIN [IIS APPPOOL\DefaultAppPool]
FROM WINDOWS WITH DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser]
FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO
在 Visual Studio 中,打开 Contoso University 解决方案。 右键单击解决方案(不是其中一个项目),然后选择“ 添加”。 选择 “现有项”,浏览到 Grant.sql,然后打开它。
备注
此脚本旨在与 SQL Server Express 2012 或更高版本以及 Windows 10、Windows 8 或 Windows 7 中的 IIS 设置配合使用,如本教程中所述。 如果使用的是不同版本的 SQL Server 或 Windows,或者以不同的方式在计算机上设置 IIS,则可能需要更改此脚本。 有关 SQL Server 脚本的详细信息,请参阅 SQL Server 联机丛书。
备注
安全说明 此脚本向在运行时访问数据库的用户授予 db_owner 权限,这是在生产环境中拥有的权限。 在某些情况下,你可能想要指定仅对部署具有完整数据库架构更新权限的用户,并为仅具有读取和写入数据权限的其他用户指定运行时。 有关详细信息,请参阅本教程后面的“查看Code First 迁移的自动 Web.config 更改”。
在应用程序数据库中运行授权脚本
可以将发布配置文件配置为在部署期间在成员身份数据库中运行授予脚本,因为该数据库部署使用 dbDacFx 提供程序。 在部署Code First 迁移期间无法运行脚本,这是部署应用程序数据库的方式。 这意味着在应用程序数据库中部署之前,必须手动运行脚本。