Azure 应用服务为 Blazor 应用程序设置环境吗?

标签 azure blazor blazor-webassembly azure-appservice azure-app-service-envrmnt

我想将 Blazor 应用程序(Web 程序集)部署到 Azure 应用服务。

我想将Azure应用服务的环境设置为开发。

我尝试将其设置为“开发”。

enter image description here

但是部署后,它显示环境:生产。

enter image description here

主页.razor:

@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment HostEnvironment

<PageTitle>Index</PageTitle>

<p>Environment: @HostEnvironment.Environment</p>

请任何人都可以建议如何将 Azure 应用服务上的环境设置为开发,而不是默认设置为生产。

非常感谢。

最佳答案

您需要修改您的web.config传递我最近尝试过的 header 中的变量。

您可以在 Azure 中手动测试此功能,方法是转到部署槽并在开发工具下选择应用服务编辑器(预览版)。

这将显示已部署应用程序的根目录,并且您将看到 Azure 已创建 web.config如果不存在,则为您提供。

您可以像这样手动添加 header :

<httpProtocol>
  <customHeaders>
    <add name="Blazor-Environment" value="Development" />
  </customHeaders>
</httpProtocol>

这位于 <system.webServer> 内标签。

Azure 为我创建了这个(您可以看到我插入 header 的位置):

Azure Web Config

现在,当您加载页面时,您的应用程序将加载正确的 app.{environment}.json 文件:

Headers

根据您的发布方式,您可能需要创建单独的 web.{environment}.config 文件:

如果在 Visual Studio IDE 中使用 .pubxml 发布功能,您可以这样做:

  1. 添加多个web.config文件添加到您的项目中,每个文件都针对特定环境而设计。你可以将它们命名为web.Production.config , web.Testing.config

  2. 确保设置 Copy to Output Directory这些文件的属性为Do not copy .

  3. 然后,在每个 .pubxml 中文件中,添加 Target这将重命名相应的 web.*.configweb.config在发布过程中。

例如,如果您有 Production.pubxml ,您可以包括:

<Target Name="WebConfigReplacement" BeforeTargets="CopyAllFilesToSingleFolderForPackage">
    <Move SourceFiles="$(ProjectDir)web.Production.config" DestinationFiles="$(ProjectDir)web.config" OverwriteReadOnlyFiles="true"/>
</Target>

对于Testing.pubxml ,您可以包括:

<Target Name="WebConfigReplacement" BeforeTargets="CopyAllFilesToSingleFolderForPackage">
    <Move SourceFiles="$(ProjectDir)web.Testing.config" DestinationFiles="$(ProjectDir)web.config" OverwriteReadOnlyFiles="true"/>
</Target>

记得更改路径$(ProjectDir)web.Production.config$(ProjectDir)web.Testing.config匹配您的 web.*.config 的实际位置文件。

这将取代 web.config在发布过程中使用特定于环境的文件。 web.config再次从 web.config.template 创建每次在本地环境中构建项目时都会生成文件。

注意:在尝试此操作之前,请务必备份您的文件,如使用Move任务将覆盖您的文件。在部署到生产环境之前,始终在安全的环境中进行测试。

此外,您应该排除 web.config来自源代码管理的文件,以防止意外提交特定于环境的配置。

关于Azure 应用服务为 Blazor 应用程序设置环境吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73001329/

相关文章:

azure - 物联网中心中物联网边缘设备的回滚策略

c# - web.config 中的环境变量

visual-studio - Blazor:无法启动调试适配器

c# - 从另一个线程更新 Blazor 中的项目列表

asp.net - 如何在 Blazor WASM 中实现预渲染

blazor - 是否有一种 blazor 方法来模拟 html 元素上的点击事件?

azure - 在 C# 代码中定义 AzureSearch 索引字段映射

php - 轮询 Azure 队列返回损坏的管道

c# - Blazor - 如何动态创建组件

ubuntu - 如何将 ABP 框架应用程序部署到 Ubuntu 服务器?