【问题标题】:Why does the environment tag helper work on my machine but not on Azure?为什么环境标记帮助程序在我的机器上工作,但在 Azure 上不工作?
【发布时间】:2019-12-28 05:00:11
【问题描述】:

这是我们的 _Layout.cshtml 上的一个部分,我将要扔出窗口。

<!-- CSS Scripts -->
    <environment include="Development">
        <script src="/ts/CS.js" asp-append-version="true" abp-ignore-src-modification="true"></script>
        <script src="/ts/CS.Url.js" asp-append-version="true" abp-ignore-src-modification="true"></script>
        <script src="/ts/CS.Settings.js" asp-append-version="true" abp-ignore-src-modification="true"></script>
        <script src="/ts/CS.Alert.js" asp-append-version="true" abp-ignore-src-modification="true"></script>
        <script src="/ts/CS.Modal.js" asp-append-version="true" abp-ignore-src-modification="true"></script>
    </environment>
    <environment include="Staging,Production">
        <script abp-src="/ts/CS.js" asp-append-version="true"></script>
        <script abp-src="/ts/CS.Url.js" asp-append-version="true"></script>
        <script abp-src="/ts/CS.Settings.js" asp-append-version="true"></script>
        <script abp-src="/ts/CS.Alert.js" asp-append-version="true"></script>
        <script abp-src="/ts/CS.Modal.js" asp-append-version="true"></script>
    </environment>

我们在某些地方使用环境标签助手来使用 .min.js 或 .js,这对调试很有用。我可以看到,如果我个人将 ASPNETCORE_ENVIRONMENT 变量从“开发”设置为“生产”,标签助手会继续呈现正确的内容。

但是,当我将其推送到 Azure 上时,内容完全丢失了。

我尝试过的事情:

  • 尝试更改 azure config 中的值 - 没有更改。
  • 最初我们有names,改为include - 没有变化。仍然可以在开发机器上运行。

这是怎么回事?!这不是别人做的吗?

【问题讨论】:

  • 当你写“azure config中的值”时,你的意思是你在你的webservice配置中设置了“ASPNETCORE_ENVIRONMENT”吗?
  • 具体在AppService > Configuration > Application Settings。我没有在那里添加它,默认情况下它在那里并且正确设置为“生产”。这是它的样子:link

标签: asp.net-core razor asp.net-core-mvc aspnetboilerplate tag-helpers


【解决方案1】:

服务器无法理解暂存、生产。您需要按如下方式进行更改。

如果您在本地工作,那么我们的脚本将在内部工作

<environment include="Development">
</environment>

如果您在 azure 和其他服务器上工作,那么我们的脚本将在其中运行

<environment exclude="Development">
</environment>

您需要更改以下代码

<environment include="Staging,Production">
        <script abp-src="/ts/CS.js" asp-append-version="true"></script>
        <script abp-src="/ts/CS.Url.js" asp-append-version="true"></script>
        <script abp-src="/ts/CS.Settings.js" asp-append-version="true"></script>
        <script abp-src="/ts/CS.Alert.js" asp-append-version="true"></script>
        <script abp-src="/ts/CS.Modal.js" asp-append-version="true"></script>    </environment>

作为

<environment exclude="Development">
                <script abp-src="/ts/CS.js" asp-append-version="true"></script>
                <script abp-src="/ts/CS.Url.js" asp-append-version="true"></script>
                <script abp-src="/ts/CS.Settings.js" asp-append-version="true"></script>
                <script abp-src="/ts/CS.Alert.js" asp-append-version="true"></script>
                <script abp-src="/ts/CS.Modal.js" asp-append-version="true"></script> 
   </environment>

它可以在任何服务器上工作。

【讨论】:

  • 你是对的。看看今天生成的模板,这正是它的样子。我发誓这曾经是不同的..
【解决方案2】:

如果您想将相同的设置应用于除Development 之外的所有其他环境,exclude="Development" 可以工作。但是我遇到了一个需要为分期和制作设置不同的设置的时候。所以我必须要具体。

为了让环境标签助手在 Azure 上工作,我使用的解决方案是,您需要在 Azure 上的 Settings -> Configuration -> Application settings 下为 ASPNETCORE_ENVIRONMENT 创建一个条目:

如果你没有在 Azure 上定义,当你发布时,如果我没记错的话,它会默认为 Production,这很奇怪。

【讨论】:

    【解决方案3】:

    我在使用 asp.net 3.0 时遇到了同样的问题。它在本地正确渲染环境,但是当我部署到 Azure 时,它​​停止检测它并按原样渲染环境。

    这里是解决方案。只需在开头的 _Layout.cshtml 文件中添加以下行。

    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

    它将解决问题。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-22
      • 2018-04-07
      • 2021-06-15
      • 2015-02-04
      • 1970-01-01
      • 2018-09-05
      相关资源
      最近更新 更多