快速入门:部署 ASP.NET Web 应用
注意
从 2024 年 6 月 1 日开始,所有新创建的应用服务应用都可以选择生成唯一的默认主机名,命名约定为 <app-name>-<random-hash>.<region>.chinacloudsites.cn
。 现有应用名称将保持不变。
示例: myapp-ds27dh7271aah175.westus-01.chinacloudsites.cn
本快速入门介绍如何创建你的第一个 ASP.NET Web 应用并将其部署到 Azure 应用服务。 应用服务支持各种版本的 .NET 应用,并提供高度可缩放、自修补的 Web 托管服务。 ASP.NET Web 应用具有跨平台特性,可以在 Linux 或 Windows 上托管。 完成后,你会获得一个 Azure 资源组,其中包含一个应用服务托管计划,以及一个部署了 Web 应用程序的应用服务。
或者,可以将 ASP.NET Web 应用部署为应用服务中的 Windows 或 Linux 容器的一部分。
提示
在 Visual Studio、Visual Studio Code 和 Azure 门户步骤中查找 GitHub Copilot 提示。
注意
尚不支持使用 MSBuild 或 SCM_DO_BUILD 通过 Windows 应用服务生成 .NET 9 (STS) 应用。 对这些生成方案的支持将在初始正式发布日期之后、2024 年 12 月 4 日前推出。 完全支持通过 Visual Studio、Visual Studio Code、GitHub Actions 和 Azure DevOps 在应用服务外部生成的部署。
先决条件
- 具有活动订阅的 Azure 帐户。 创建帐户。
- 带有 ASP.NET 和 Web 开发工作负载的 Visual Studio 2022。
- (可选)若要试用 GitHub Copilot,请创建一个 GitHub Copilot 帐户。 提供 30 天试用期。
如果已安装 Visual Studio 2022:
- 通过选择“帮助”>“检查更新”,在 Visual Studio 中安装最新更新。
- 通过选择“工具”>“获取工具和功能”,添加工作负荷。
- 具有活动订阅的 Azure 帐户。 创建帐户。
- Visual Studio Code。
- Azure 工具扩展。
- 最新的 .NET 8.0 SDK。
- (可选)若要试用 GitHub Copilot,请创建一个 GitHub Copilot 帐户。 提供 30 天试用期。
- 一个 Azure 帐户和一个有效的订阅。 创建帐户。
- Azure CLI。
- 最新的 .NET 8.0 SDK。
- (可选)若要试用 GitHub Copilot,请创建一个 GitHub Copilot 帐户。 提供 30 天试用期。
- 一个 Azure 帐户和一个有效的订阅。 创建帐户。
- Azure PowerShell。
- 最新的 .NET 8.0 SDK。
提示
如果你有 GitHub Copilot 帐户,请尝试获取适用于 Visual Studio 的 GitHub Copilot 功能。
在计算机上打开终端窗口,进入工作目录。 使用
dotnet new webapp
命令创建新的 .NET Web 应用,然后将目录更改为新创建的应用。dotnet new webapp -n MyFirstAzureWebApp --framework net8.0 cd MyFirstAzureWebApp
在同一终端会话中,使用
dotnet run
命令本地运行该应用程序。dotnet run --urls=https://localhost:5001/
打开 Web 浏览器并导航到
https://localhost:5001
处的应用。你会看到页面中显示的模板 ASP.NET Core 8.0 Web 应用。
在此步骤中,你要创建演示项目的分支以进行部署。
- 转到 .NET 8.0 示例应用。
- 选择 GitHub 页面右上角的“创建分支”按钮。
- 选择“所有者”并保留默认存储库名称。
- 选择“创建分支”。
2. 发布 Web 应用
遵循以下步骤创建应用服务资源并发布项目:
在“解决方案资源管理器”中右键单击“MyFirstAzureWebApp”项目,然后选择“发布”。
在“发布”中,选择“Azure”,然后单击“下一步”。
选择特定目标,即 Azure 应用服务 (Linux) 或 Azure 应用服务 (Windows)。 然后,选择“下一步”。
重要
面向 ASP.NET Framework 4.8 时,请使用 Azure 应用服务 (Windows)。
你的选项取决于你是否已登录 Azure 以及是否有一个链接到 Azure 帐户的 Visual Studio 帐户。 选择“添加帐户”或“登录”以登录 Azure 订阅。 如果你已经登录,请选择所需的帐户。
在“应用服务实例”的右侧,选择 +。
对于“订阅”,请接受列出的订阅,或从下拉列表中选择一个新订阅。
对于“资源组”,选择“新建”。 在“新资源组名称”中,输入“myResourceGroup”并选择“确定”。
对于“托管计划”,请选择“新建”。
在“托管计划:新建”对话框中,输入下表中指定的值:
设置 建议值 说明 托管计划 MyFirstAzureWebAppPlan 应用服务计划的名称。 位置 中国北部 2 托管 Web 应用的数据中心。 大小 选择最低层。 定价层定义托管功能。 在名称中,输入仅包含有效字符
a-z
、A-Z
、0-9
和-
的唯一应用名称。 可以接受自动生成的唯一名称。 Web 应用的 URL 为http://<app-name>.chinacloudsites.cn
,其中<app-name>
是应用名称。选择“创建”以创建 Azure 资源。
向导完成后,会为你创建 Azure 资源,此时你做好发布 ASP.NET Core 项目的准备了。
在“发布”对话框中,确保选中你的新的应用服务应用,然后选择“完成”,再选择“关闭”。 Visual Studio 为所选应用服务应用创建发布配置文件。
在“发布”页中,选择“发布”。 如果看到警告消息时,请选择“继续”。
Visual Studio 将生成、打包应用并将其发布到 Azure,然后在默认浏览器中启动该应用。
你会看到页面中显示的 ASP.NET Core 8.0 Web 应用。
从项目的根目录打开 Visual Studio Code。
code .
如果出现提示,请选择“是,我信任作者”。
提示
如果你有 GitHub Copilot 帐户,请尝试获取适用于 Visual Studio Code 的 GitHub Copilot 功能。
在 Visual Studio Code 中,选择“视图”>“命令面板”来打开命令面板。
搜索并选择“Azure 应用服务:新建 Web 应用(高级)”。
响应提示,如下所述:
- 如果出现系统提示,请登录到你的 Azure 帐户。
- 选择订阅。
- 选择“创建新 Web 应用…高级”。
- 对于“输入全局唯一名称”,请使用在所有 Azure 中都是唯一的名称(有效字符为
a-z
、0-9
和-
)。 良好的模式是结合使用公司名称和应用标识符。 - 选择“创建新的资源组”并提供一个名称,例如
myResourceGroup
。 - 当系统提示“选择运行时堆栈”时,请选择“.NET 8 (LTS)”。
- 选择操作系统(Windows 或 Linux)。
- 选择附近的位置。
- 选择“创建新的应用服务计划”,提供一个名称,然后选择“免费 (F1)”定价层。
- 对于 Application Insights 资源,选择“暂时跳过”。
- 出现提示时,选择“部署”。
- 选择“MyFirstAzureWebApp”作为要部署的文件夹。
- 在出现提示时选择“添加配置”。
在“始终将工作区 "MyFirstAzureWebApp" 部署到 <app-name>”,选择“是”,以便每次在该工作区中时,Visual Studio Code 都会部署到相同的应用服务应用。
发布完成后,选择通知中的“浏览网站”,并在出现提示时选择“打开”。
你会看到页面中显示的 ASP.NET Core 8.0 Web 应用。
使用
az login
命令并按照提示登录到 Azure 帐户:az login
- 如果无法识别
az
命令,请确保已按照 必备条件 中所述安装了 Azure CLI。
- 如果无法识别
使用
az webapp up
命令在本地 MyFirstAzureWebApp 目录中部署代码:az webapp up --sku F1 --name <app-name> --os-type <os>
- 将
<app-name>
替换为在整个 Azure 中均唯一的名称(有效字符为a-z
、0-9
和-
)。 良好的模式是结合使用公司名称和应用标识符。 --sku F1
参数在“免费”定价层上创建 Web 应用。 省略此参数可使用更快的高级层,这会按小时计费。- 用
linux
或windows
替换<os>
。 - 可以选择包含参数
--location <location-name>
,其中<location-name>
是可用的 Azure 区域。 可以运行az account list-locations
命令来检索 Azure 帐户的允许区域列表。
该命令可能需要几分钟时间才能完成。 当该命令运行时,它会提供以下相关消息:创建资源组、应用服务计划和托管应用,配置日志记录,然后执行 ZIP 部署。 然后,它显示一条包含应用 URL 的消息:
You can launch the app at http://<app-name>.chinacloudsites.cn
- 将
打开 Web 浏览器并导航到 URL:
你会看到页面中显示的 ASP.NET Core 8.0 Web 应用。
注意
建议使用 Azure PowerShell 在 Windows 托管平台上创建应用。 若要在 Linux 上创建应用,请使用其他工具,例如 Azure CLI。
使用
Connect-AzAccount -Environment AzureChinaCloud
命令并按照提示登录到 Azure 帐户:Connect-AzAccount -Environment AzureChinaCloud
使用 New-AzWebApp 命令创建新的应用:
New-AzWebApp -ResourceGroupName myResourceGroup -Name <app-name> -Location chinanorth2
- 将
<app-name>
替换为在整个 Azure 中均唯一的名称(有效字符为a-z
、0-9
和-
)。 结合使用公司名称和应用标识符是一种良好的模式。 - 可选择包含参数
-Location <location-name>
,其中<location-name>
是可用的 Azure 区域。 可以运行Get-AzLocation
命令来检索 Azure 帐户的允许区域列表。
该命令可能需要几分钟时间才能完成。 当该命令运行时,它会创建资源组、应用服务计划和应用服务资源。
- 将
从应用程序根文件夹,使用
dotnet publish
命令准备本地 MyFirstAzureWebApp 应用程序进行部署:dotnet publish --configuration Release
更改为发布目录,并根据内容创建一个 zip 文件:
cd bin\Release\net8.0\publish Compress-Archive -Path * -DestinationPath deploy.zip
使用 Publish-AzWebApp 命令将 zip 文件发布到 Azure 应用:
Publish-AzWebApp -ResourceGroupName myResourceGroup -Name <app-name> -ArchivePath (Get-Item .\deploy.zip).FullName -Force
注意
-ArchivePath
需要 zip 文件的完整路径。打开 Web 浏览器并导航到 URL:
你会看到页面中显示的 ASP.NET Core 8.0 Web 应用。
在搜索框中键入“应用服务”。 在“服务”下选择“应用程序服务”。
在“应用服务”页面中,请选择“创建”>“Web 应用”。
在“基本信息”选项卡中:
- 在“资源组”下,选择“新建”。 对于名称,请键入 myResourceGroup。
- 在“名称”下,为 Web 应用键入全局唯一名称。
- 在“发布”下,选择“代码”。
- 在“运行时堆栈”下,选择“.NET 8 (LTS)”。
- 在“操作系统”下选择“Windows”。 如果选择“Linux”,则无法在下一步配置 GitHub 部署,但仍可在“部署中心”页中创建应用后执行此操作。
- 选择要为应用提供服务的区域。
- 在“应用服务计划”下,选择“新建”,然后输入 myAppServicePlan 作为名称。
- 在“定价计划”下,选择“免费 F1”。
选择页面顶部的“部署”选项卡
在“GitHub Actions 设置”下,将“持续部署”设置为“启用”。
在“GitHub Actions 详细信息”下,使用 GitHub 帐户进行身份验证,然后选择以下选项:
- 对于“组织”,选择在其中创建了演示项目分支的组织。
- 对于“存储库”,选择 dotnetcore-docs-hello-world 项目。
- 对于“分支”,请选择“main”。
注意
默认情况下,创建向导禁用基本身份验证,并使用用户分配的标识创建 GitHub Actions 部署。 如果在资源创建过程中遇到权限错误,则表明你的 Azure 帐户可能没有足够的权限。 可以使用 Azure 管理员为你生成的标识稍后配置 GitHub Actions 部署,也可以改为启用基本身份验证。
选择页面底部的“查看 + 创建”按钮。
运行验证之后,请选择页面底部的“创建”按钮。
在部署完成之后,选择“转到资源”。
在 Web 浏览器中使用以下 URL 浏览到已部署的应用程序:
http://<app-name>.chinacloudsites.cn
。 如果看到“你的 Web 应用正在运行,并正在等待你的内容”消息,则表明 GitHub 部署仍在运行。 请等待几分钟,然后刷新页面。
3. 更新应用并重新部署
需对 Index.cshtml 进行更改,然后重新部署以查看所做的更改。 在 .NET 8.0 模板中,它位于 Pages 文件夹中。 在 .NET Framework 4.8 模板中,它位于 Views/Home 文件夹中。 遵循以下步骤更新并重新部署 Web 应用:
在“解决方案资源管理器”中你的项目下,打开“Index.cshtml”。
将第一个
<div>
元素替换为以下代码:<div class="jumbotron"> <h1>.NET 💜 Azure</h1> <p class="lead">Example .NET app to Azure App Service.</p> </div>
提示
在 Visual Studio 中启用 GitHub Copilot 后,请尝试以下操作:
- 选择
<div>
元素并输入 Alt+/。 - 要求 Copilot“更改为显示‘.NET 💜 Azure’的启动卡。”
保存所做更改。
- 选择
若要重新部署到 Azure,请在“解决方案资源管理器”中右键单击“MyFirstAzureWebApp”项目,然后选择“发布”。
在“发布”摘要页中选择“发布”。
发布完成后,Visual Studio 将启动浏览器并转到 Web 应用的 URL。
你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。
打开 Pages/Index.cshtml。
将第一个
<div>
元素替换为以下代码:<div class="jumbotron"> <h1>.NET 💜 Azure</h1> <p class="lead">Example .NET app to Azure App Service.</p> </div>
提示
通过 GitHub Copilot 尝试此操作:
- 选择整个
<div>
元素,然后单击 。 - 要求 Copilot“更改为显示‘.NET 💜 Azure’的启动卡。”
保存所做更改。
- 选择整个
搜索并选择“Azure 应用服务:部署到 Web 应用”。
选择之前使用的订阅和 Web 应用。
出现提示时,选择“部署”。
发布完成后,选择通知中的“浏览网站”。
你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。
在本地目录中,打开 Pages/Index.cshtml 文件。 替换第一个 <div>
元素:
<div class="jumbotron">
<h1>.NET 💜 Azure</h1>
<p class="lead">Example .NET app to Azure App Service.</p>
</div>
保存更改,然后再次使用 az webapp up
命令重新部署应用,并将 <os>
替换为 linux
或 windows
。
az webapp up --os-type <os>
此命令使用本地缓存在 .azure/config 文件中的值,包括应用名称、资源组和应用服务计划。
部署完成后,切换回在“浏览到应用”步骤中打开的浏览器窗口,并点击“刷新”。
你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。
在本地目录中,打开 Pages/Index.cshtml 文件。 替换第一个
<div>
元素:<div class="jumbotron"> <h1>.NET 💜 Azure</h1> <p class="lead">Example .NET app to Azure App Service.</p> </div>
从应用程序根文件夹,使用
dotnet publish
命令准备本地 MyFirstAzureWebApp 应用程序进行部署:dotnet publish --configuration Release
更改为发布目录,并根据内容创建一个 zip 文件:
cd bin\Release\net8.0\publish Compress-Archive -Path * -DestinationPath deploy.zip
使用 Publish-AzWebApp 命令将 zip 文件发布到 Azure 应用:
Publish-AzWebApp -ResourceGroupName myResourceGroup -Name <app-name> -ArchivePath (Get-Item .\deploy.zip).FullName -Force
注意
-ArchivePath
需要 zip 文件的完整路径。部署完成后,切换回在“浏览到应用”步骤中打开的浏览器窗口,并点击“刷新”。
你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。
浏览到示例代码的 GitHub 分支。
在存储库页面上,通过选择“代码”>“在 main 分支上创建 codespace”来创建 codespace。
提示
如果你有 GitHub Copilot 帐户,请尝试在 codespace 中获取 GitHub Copilot 功能。
打开 Index.cshtml。
Index.cshtml 位于
Pages
文件夹中。将第一个
<div>
元素替换为以下代码:<div class="jumbotron"> <h1>.NET 💜 Azure</h1> <p class="lead">Example .NET app to Azure App Service.</p> </div>
更改将自动保存。
提示
通过 GitHub Copilot 尝试此操作:
- 选择整个
<div>
元素,然后单击 。 - 要求 Copilot“更改为显示‘.NET 💜 Azure’的启动卡。”
- 选择整个
在“源代码管理”菜单中输入提交消息,例如“
Modify homepage
”。 然后选择“提交”,并通过选择“是”确认暂存所做的更改。提示
通过在消息框中选择 ,让 GitHub Copilot 为你创建提交消息。
选择“同步更改 1”,然后通过选择“确定”进行确认。
需要几分钟才能运行部署。 若要查看进度,请导航到
https://github.com/<your-github-alias>/dotnetcore-docs-hello-world/actions
。返回到在“浏览到应用”步骤中打开的浏览器窗口,然后刷新页面。
你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。
4. 管理 Azure 应用
若要管理 Web 应用,请转到 Azure 门户,然后搜索并选择“应用服务”。
在“应用服务”页上,选择 Web 应用的名称。
Web 应用的“概述”页包含用于基本管理(例如浏览、停止、启动、重启和删除)的选项。 左侧菜单提供用于配置应用的更多页面。
清理资源
在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不再需要这些资源,可以通过删除资源组来删除它们。
- 在 Azure 门户的 Web 应用的“概述”页中,选择“资源组”下的 myResourceGroup 链接。
- 在资源组页上,确保列出的资源是要删除的。
- 选择“删除”,在文本框中键入“myResourceGroup”,然后选择“删除”。
清理资源
在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不再需要这些资源,可以通过删除资源组来删除它们。
- 在 Azure 门户的 Web 应用的“概述”页中,选择“资源组”下的 myResourceGroup 链接。
- 在资源组页上,确保列出的资源是要删除的。
- 选择“删除”,在文本框中键入“myResourceGroup”,然后选择“删除”。
在前面的步骤中,你在资源组中创建了 Azure 资源。 如果认为将来不需要这些资源,请在 Cloud Shell 中运行以下命令删除资源组:
az group delete
为方便起见,你之前在此项目中运行的 az webapp up
命令会在你从此项目运行 az
命令时将资源组名称保存为默认值。
清理资源
在前面的步骤中,你在资源组中创建了 Azure 资源。 如果你认为将来不再需要这些资源,请运行以下 PowerShell 命令删除资源组:
Remove-AzResourceGroup -Name myResourceGroup
此命令可能需要花费一点时间运行。
清理资源
在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不再需要这些资源,可以通过删除资源组来删除它们。
- 在 Azure 门户的 Web 应用的“概述”页中,选择“资源组”下的 myResourceGroup 链接。
- 在资源组页上,确保列出的资源是要删除的。
- 选择“删除”,在文本框中键入“myResourceGroup”,然后选择“删除”。
后续步骤
请继续学习下一篇文章,了解如何创建 .NET Core 应用并将其连接到 SQL 数据库: