快速入门:部署 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 在应用服务外部生成的部署。

先决条件

如果已安装 Visual Studio 2022:

  1. 通过选择“帮助”>“检查更新”,在 Visual Studio 中安装最新更新。
  2. 通过选择“工具”>“获取工具和功能”,添加工作负荷。
  1. 打开 Visual Studio,然后选择“创建新项目”。

  2. 在“创建新项目”中,找到并选择“ASP.NET Core Web 应用(Razor Pages)”,然后选择“下一步”

  3. 在“配置新项目”中,将应用程序命名为“MyFirstAzureWebApp”,然后选择“下一步”。

    Visual Studio 的屏幕截图 - 配置 ASP.NET 8.0 Web 应用。

  4. 选择“.NET 8.0(长期支持)”。

  5. 确保“身份验证类型”设置为“无身份验证”。 选择“创建”。

    Visual Studio 的屏幕截图 - 选择 .NET 8.0 时的其他信息。

  6. 在 Visual Studio 菜单中,选择“调试”>“开始执行(不调试)”以在本地运行 Web 应用。 如果看到要求你信任自签名证书的消息,请选择“”。

    Visual Studio 的屏幕截图 - ASP.NET Core 8.0 在本地运行。

提示

如果你有 GitHub Copilot 帐户,请尝试获取适用于 Visual Studio 的 GitHub Copilot 功能

  1. 在计算机上打开终端窗口,进入工作目录。 使用 dotnet new webapp 命令创建新的 .NET Web 应用,然后将目录更改为新创建的应用。

    dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
    cd MyFirstAzureWebApp
    
  2. 在同一终端会话中,使用 dotnet run 命令本地运行该应用程序。

    dotnet run --urls=https://localhost:5001/
    
  3. 打开 Web 浏览器并导航到 https://localhost:5001 处的应用。

    你会看到页面中显示的模板 ASP.NET Core 8.0 Web 应用。

    Visual Studio Code 的屏幕截图 - 本地浏览器中的 ASP.NET Core 8.0。

在此步骤中,你要创建演示项目的分支以进行部署。

  1. 转到 .NET 8.0 示例应用
  2. 选择 GitHub 页面右上角的“创建分支”按钮。
  3. 选择“所有者”并保留默认存储库名称
  4. 选择“创建分支”。

2. 发布 Web 应用

遵循以下步骤创建应用服务资源并发布项目:

  1. 在“解决方案资源管理器”中右键单击“MyFirstAzureWebApp”项目,然后选择“发布”。

  2. 在“发布”中,选择“Azure”,然后单击“下一步”。

    Visual Studio 的屏幕截图 - 发布 Web 应用并以 Azure 为目标。

  3. 选择特定目标,即 Azure 应用服务 (Linux)Azure 应用服务 (Windows)。 然后,选择“下一步”。

    重要

    面向 ASP.NET Framework 4.8 时,请使用 Azure 应用服务 (Windows)

  4. 你的选项取决于你是否已登录 Azure 以及是否有一个链接到 Azure 帐户的 Visual Studio 帐户。 选择“添加帐户”或“登录”以登录 Azure 订阅。 如果你已经登录,请选择所需的帐户。

    Visual Studio 的屏幕截图 -“选择登录到 Azure”对话框。

  5. 在“应用服务实例”的右侧,选择 +

    Visual Studio 的屏幕截图 -“新建应用服务应用”对话框。

  6. 对于“订阅”,请接受列出的订阅,或从下拉列表中选择一个新订阅。

  7. 对于“资源组”,选择“新建”。 在“新资源组名称”中,输入“myResourceGroup”并选择“确定”。

  8. 对于“托管计划”,请选择“新建”。

  9. 在“托管计划:新建”对话框中,输入下表中指定的值:

    设置 建议值 说明
    托管计划 MyFirstAzureWebAppPlan 应用服务计划的名称。
    位置 中国北部 2 托管 Web 应用的数据中心。
    大小 选择最低层。 定价层定义托管功能。
  10. 名称中,输入仅包含有效字符 a-zA-Z0-9- 的唯一应用名称。 可以接受自动生成的唯一名称。 Web 应用的 URL 为 http://<app-name>.chinacloudsites.cn,其中 <app-name> 是应用名称。

  11. 选择“创建”以创建 Azure 资源。

    Visual Studio 的屏幕截图 -“创建应用资源”对话框。

    向导完成后,会为你创建 Azure 资源,此时你做好发布 ASP.NET Core 项目的准备了。

  12. 在“发布”对话框中,确保选中你的新的应用服务应用,然后选择“完成”,再选择“关闭”。 Visual Studio 为所选应用服务应用创建发布配置文件。

  13. 在“发布”页中,选择“发布”。 如果看到警告消息时,请选择“继续”。

    Visual Studio 将生成、打包应用并将其发布到 Azure,然后在默认浏览器中启动该应用。

    你会看到页面中显示的 ASP.NET Core 8.0 Web 应用。

    Visual Studio 的屏幕截图 - Azure 中的 ASP.NET Core 8.0 Web 应用。

  1. 从项目的根目录打开 Visual Studio Code。

    code .
    
  2. 如果出现提示,请选择“是,我信任作者”。

    提示

    如果你有 GitHub Copilot 帐户,请尝试获取适用于 Visual Studio Code 的 GitHub Copilot 功能

  3. 在 Visual Studio Code 中,选择“视图”>“命令面板”来打开命令面板

  4. 搜索并选择“Azure 应用服务:新建 Web 应用(高级)”。

  5. 响应提示,如下所述:

    1. 如果出现系统提示,请登录到你的 Azure 帐户。
    2. 选择订阅
    3. 选择“创建新 Web 应用…高级”。
    4. 对于“输入全局唯一名称”,请使用在所有 Azure 中都是唯一的名称(有效字符为 a-z0-9-)。 良好的模式是结合使用公司名称和应用标识符。
    5. 选择“创建新的资源组”并提供一个名称,例如 myResourceGroup
    6. 当系统提示“选择运行时堆栈”时,请选择“.NET 8 (LTS)”。
    7. 选择操作系统(Windows 或 Linux)。
    8. 选择附近的位置。
    9. 选择“创建新的应用服务计划”,提供一个名称,然后选择“免费 (F1)”定价层
    10. 对于 Application Insights 资源,选择“暂时跳过”。
    11. 出现提示时,选择“部署”
    12. 选择“MyFirstAzureWebApp”作为要部署的文件夹。
    13. 在出现提示时选择“添加配置”。
  6. 在“始终将工作区 "MyFirstAzureWebApp" 部署到 <app-name>”,选择“是”,以便每次在该工作区中时,Visual Studio Code 都会部署到相同的应用服务应用。

  7. 发布完成后,选择通知中的“浏览网站”,并在出现提示时选择“打开”。

    你会看到页面中显示的 ASP.NET Core 8.0 Web 应用。

    Visual Studio Code 的屏幕截图 - Azure 中的 ASP.NET Core 8.0 Web 应用。

  1. 使用 az login 命令并按照提示登录到 Azure 帐户:

    az login
    
    • 如果无法识别 az 命令,请确保已按照 必备条件 中所述安装了 Azure CLI。
  2. 使用 az webapp up 命令在本地 MyFirstAzureWebApp 目录中部署代码:

    az webapp up --sku F1 --name <app-name> --os-type <os>
    
    • <app-name> 替换为在整个 Azure 中均唯一的名称(有效字符为 a-z0-9-)。 良好的模式是结合使用公司名称和应用标识符。
    • --sku F1 参数在“免费”定价层上创建 Web 应用。 省略此参数可使用更快的高级层,这会按小时计费。
    • linuxwindows 替换 <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
    
  3. 打开 Web 浏览器并导航到 URL:

    你会看到页面中显示的 ASP.NET Core 8.0 Web 应用。

    CLI 的屏幕截图 - Azure 中的 ASP.NET Core 8.0 Web 应用。

注意

建议使用 Azure PowerShell 在 Windows 托管平台上创建应用。 若要在 Linux 上创建应用,请使用其他工具,例如 Azure CLI

  1. 使用 Connect-AzAccount -Environment AzureChinaCloud 命令并按照提示登录到 Azure 帐户:

    Connect-AzAccount -Environment AzureChinaCloud
    
  1. 使用 New-AzWebApp 命令创建新的应用:

    New-AzWebApp -ResourceGroupName myResourceGroup -Name <app-name> -Location chinanorth2
    
    • <app-name> 替换为在整个 Azure 中均唯一的名称(有效字符为 a-z0-9-)。 结合使用公司名称和应用标识符是一种良好的模式。
    • 可选择包含参数 -Location <location-name>,其中 <location-name> 是可用的 Azure 区域。 可以运行 Get-AzLocation 命令来检索 Azure 帐户的允许区域列表。

    该命令可能需要几分钟时间才能完成。 当该命令运行时,它会创建资源组、应用服务计划和应用服务资源。

  2. 从应用程序根文件夹,使用 dotnet publish 命令准备本地 MyFirstAzureWebApp 应用程序进行部署:

    dotnet publish --configuration Release
    
  3. 更改为发布目录,并根据内容创建一个 zip 文件:

    cd bin\Release\net8.0\publish
    Compress-Archive -Path * -DestinationPath deploy.zip
    
  4. 使用 Publish-AzWebApp 命令将 zip 文件发布到 Azure 应用:

    Publish-AzWebApp -ResourceGroupName myResourceGroup -Name <app-name> -ArchivePath (Get-Item .\deploy.zip).FullName -Force
    

    注意

    -ArchivePath 需要 zip 文件的完整路径。

  5. 打开 Web 浏览器并导航到 URL:

    你会看到页面中显示的 ASP.NET Core 8.0 Web 应用。

    CLI 的屏幕截图 - Azure 中的 ASP.NET Core 8.0 Web 应用。

  1. 在搜索框中键入“应用服务”。 在“服务”下选择“应用程序服务”。

    Azure 门户中门户搜索的屏幕截图。

  2. 在“应用服务”页面中,请选择“创建”>“Web 应用”。

  3. 在“基本信息”选项卡中:

    • 在“资源组”下,选择“新建”。 对于名称,请键入 myResourceGroup
    • 在“名称”下,为 Web 应用键入全局唯一名称。
    • 在“发布”下,选择“代码”。
    • 在“运行时堆栈”下,选择“.NET 8 (LTS)”
    • 在“操作系统”下选择“Windows”。 如果选择“Linux”,则无法在下一步配置 GitHub 部署,但仍可在“部署中心”页中创建应用后执行此操作。
    • 选择要为应用提供服务的区域
    • 在“应用服务计划”下,选择“新建”,然后输入 myAppServicePlan 作为名称。
    • 在“定价计划”下,选择“免费 F1”。

    Azure 门户中 .NET 8 的新应用服务应用配置的屏幕截图。

  4. 选择页面顶部的“部署”选项卡

  5. 在“GitHub Actions 设置”下,将“持续部署”设置为“启用”

  6. 在“GitHub Actions 详细信息”下,使用 GitHub 帐户进行身份验证,然后选择以下选项:

    • 对于“组织”,选择在其中创建了演示项目分支的组织
    • 对于“存储库”,选择 dotnetcore-docs-hello-world 项目。
    • 对于“分支”,请选择“main”

    使用 .NET 8 运行时的某个应用的部署选项的屏幕截图。

    注意

    默认情况下,创建向导禁用基本身份验证,并使用用户分配的标识创建 GitHub Actions 部署。 如果在资源创建过程中遇到权限错误,则表明你的 Azure 帐户可能没有足够的权限。 可以使用 Azure 管理员为你生成的标识稍后配置 GitHub Actions 部署,也可以改为启用基本身份验证。

  7. 选择页面底部的“查看 + 创建”按钮。

  8. 运行验证之后,请选择页面底部的“创建”按钮。

  9. 在部署完成之后,选择“转到资源”。

    前往资源的下一步的屏幕截图。

  10. 在 Web 浏览器中使用以下 URL 浏览到已部署的应用程序:http://<app-name>.chinacloudsites.cn。 如果看到“你的 Web 应用正在运行,并正在等待你的内容”消息,则表明 GitHub 部署仍在运行。 请等待几分钟,然后刷新页面。

3. 更新应用并重新部署

需对 Index.cshtml 进行更改,然后重新部署以查看所做的更改。 在 .NET 8.0 模板中,它位于 Pages 文件夹中。 在 .NET Framework 4.8 模板中,它位于 Views/Home 文件夹中。 遵循以下步骤更新并重新部署 Web 应用:

  1. 在“解决方案资源管理器”中你的项目下,打开“Index.cshtml”。

  2. 将第一个 <div> 元素替换为以下代码:

    <div class="jumbotron">
        <h1>.NET 💜 Azure</h1>
        <p class="lead">Example .NET app to Azure App Service.</p>
    </div>
    

    提示

    在 Visual Studio 中启用 GitHub Copilot 后,请尝试以下操作:

    1. 选择 <div> 元素并输入 Alt+/
    2. 要求 Copilot“更改为显示‘.NET 💜 Azure’的启动卡。”

    保存所做更改。

  3. 若要重新部署到 Azure,请在“解决方案资源管理器”中右键单击“MyFirstAzureWebApp”项目,然后选择“发布”。

  4. 在“发布”摘要页中选择“发布”。

    发布完成后,Visual Studio 将启动浏览器并转到 Web 应用的 URL。

    你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。

    Visual Studio 的屏幕截图 - Azure 中更新后的 ASP.NET Core 8.0 Web 应用。

  1. 打开 Pages/Index.cshtml

  2. 将第一个 <div> 元素替换为以下代码:

    <div class="jumbotron">
        <h1>.NET 💜 Azure</h1>
        <p class="lead">Example .NET app to Azure App Service.</p>
    </div>
    

    提示

    通过 GitHub Copilot 尝试此操作:

    1. 选择整个 <div> 元素,然后单击
    2. 要求 Copilot“更改为显示‘.NET 💜 Azure’的启动卡。”

    保存所做更改。

  3. 在 Visual Studio Code 中,打开“命令面板”,快捷键为 Ctrl+Shift+P

  4. 搜索并选择“Azure 应用服务:部署到 Web 应用”。

  5. 选择之前使用的订阅和 Web 应用。

  6. 出现提示时,选择“部署”

  7. 发布完成后,选择通知中的“浏览网站”

    你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。

    Visual Studio Code 的屏幕截图 - Azure 中更新后的 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> 替换为 linuxwindows

az webapp up --os-type <os>

此命令使用本地缓存在 .azure/config 文件中的值,包括应用名称、资源组和应用服务计划。

部署完成后,切换回在“浏览到应用”步骤中打开的浏览器窗口,并点击“刷新”。

你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。

CLI 的屏幕截图 - Azure 中更新后的 ASP.NET Core 8.0 Web 应用。

  1. 在本地目录中,打开 Pages/Index.cshtml 文件。 替换第一个 <div> 元素:

    <div class="jumbotron">
        <h1>.NET 💜 Azure</h1>
        <p class="lead">Example .NET app to Azure App Service.</p>
    </div>
    
  2. 从应用程序根文件夹,使用 dotnet publish 命令准备本地 MyFirstAzureWebApp 应用程序进行部署:

    dotnet publish --configuration Release
    
  3. 更改为发布目录,并根据内容创建一个 zip 文件:

    cd bin\Release\net8.0\publish
    Compress-Archive -Path * -DestinationPath deploy.zip
    
  4. 使用 Publish-AzWebApp 命令将 zip 文件发布到 Azure 应用:

    Publish-AzWebApp -ResourceGroupName myResourceGroup -Name <app-name> -ArchivePath (Get-Item .\deploy.zip).FullName -Force
    

    注意

    -ArchivePath 需要 zip 文件的完整路径。

  5. 部署完成后,切换回在“浏览到应用”步骤中打开的浏览器窗口,并点击“刷新”。

    你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。

    CLI 的屏幕截图 - Azure 中更新后的 ASP.NET Core 8.0 Web 应用。

  1. 浏览到示例代码的 GitHub 分支。

  2. 在存储库页面上,通过选择“代码”>“在 main 分支上创建 codespace”来创建 codespace。

    提示

    如果你有 GitHub Copilot 帐户,请尝试在 codespace 中获取 GitHub Copilot 功能

  3. 打开 Index.cshtml

    Index.cshtml 位于 Pages 文件夹中。

    浏览器中 Visual Studio Code 的资源管理器窗口的屏幕截图,突出显示了 dotnetcore-docs-hello-world 存储库中的 Index.cshtml。

  4. 将第一个 <div> 元素替换为以下代码:

    <div class="jumbotron">
        <h1>.NET 💜 Azure</h1>
        <p class="lead">Example .NET app to Azure App Service.</p>
    </div>
    

    更改将自动保存。

    提示

    通过 GitHub Copilot 尝试此操作:

    1. 选择整个 <div> 元素,然后单击
    2. 要求 Copilot“更改为显示‘.NET 💜 Azure’的启动卡。”
  5. 在“源代码管理”菜单中输入提交消息,例如“Modify homepage”。 然后选择“提交”,并通过选择“是”确认暂存所做的更改。

    提示

    通过在消息框中选择 ,让 GitHub Copilot 为你创建提交消息。

  6. 选择“同步更改 1”,然后通过选择“确定”进行确认。

  7. 需要几分钟才能运行部署。 若要查看进度,请导航到 https://github.com/<your-github-alias>/dotnetcore-docs-hello-world/actions

  8. 返回到在“浏览到应用”步骤中打开的浏览器窗口,然后刷新页面。

    你会看到页面中显示的更新后的 ASP.NET Core 8.0 Web 应用。

    CLI 的屏幕截图 - Azure 中更新后的 ASP.NET Core 8.0 Web 应用。

4. 管理 Azure 应用

若要管理 Web 应用,请转到 Azure 门户,然后搜索并选择“应用服务”。

Azure 门户的屏幕截图 - 选择“应用服务”选项。

在“应用服务”页上,选择 Web 应用的名称。

Azure 门户的屏幕截图 - 已选择一个示例 Web 应用的“应用服务”页面。

Web 应用的“概述”页包含用于基本管理(例如浏览、停止、启动、重启和删除)的选项。 左侧菜单提供用于配置应用的更多页面。

Azure 门户的屏幕截图 -“应用服务概述”页面。

清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不再需要这些资源,可以通过删除资源组来删除它们。

  1. 在 Azure 门户的 Web 应用的“概述”页中,选择“资源组”下的 myResourceGroup 链接。
  2. 在资源组页上,确保列出的资源是要删除的。
  3. 选择“删除”,在文本框中键入“myResourceGroup”,然后选择“删除”。

清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不再需要这些资源,可以通过删除资源组来删除它们。

  1. 在 Azure 门户的 Web 应用的“概述”页中,选择“资源组”下的 myResourceGroup 链接。
  2. 在资源组页上,确保列出的资源是要删除的。
  3. 选择“删除”,在文本框中键入“myResourceGroup”,然后选择“删除”。

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果认为将来不需要这些资源,请在 Cloud Shell 中运行以下命令删除资源组:

az group delete

为方便起见,你之前在此项目中运行的 az webapp up 命令会在你从此项目运行 az 命令时将资源组名称保存为默认值。

清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果你认为将来不再需要这些资源,请运行以下 PowerShell 命令删除资源组:

Remove-AzResourceGroup -Name myResourceGroup

此命令可能需要花费一点时间运行。

清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不再需要这些资源,可以通过删除资源组来删除它们。

  1. 在 Azure 门户的 Web 应用的“概述”页中,选择“资源组”下的 myResourceGroup 链接。
  2. 在资源组页上,确保列出的资源是要删除的。
  3. 选择“删除”,在文本框中键入“myResourceGroup”,然后选择“删除”。

后续步骤