快速入门:部署 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 提示。

先决条件

如果已安装 Visual Studio 2022:

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

1. 创建 ASP.NET Web 应用

  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”,然后选择“删除” 。

后续步骤