【问题标题】:Disabling WebJob Functions Depending on Environment根据环境禁用 WebJob 功能
【发布时间】:2021-01-25 16:09:13
【问题描述】:

我的团队最近继承了一个在 Azure 应用服务上运行的 ASP.NET 解决方案。解决方案中的一个项目似乎定义了利用 Azure WebJobs SDK 运行多个功能的 C# 代码。我不是 C# 或 ASP.NET 开发人员,但我参与了项目的构建和发布管道的开发。

我有两个应用服务环境需要运行 WebJobs 项目,但在其中一个环境的情况下,某些功能应该运行。

每个函数似乎都有自己的 .cs 文件,而且这些函数似乎可以从 App.config 文件继承配置(可以在运行时使用 App.Staging.config 和 App.Prod.config 等文件进行转换) .项目中的函数示例可能如下所示:

using Microsoft.Azure.WebJobs;
using System;
using System.Configuration;
using System.IO;

namespace My.Project.WebJobs
{
    public class SomeTask
    {
        public void ExecuteTask([TimerTrigger(typeof(CustomScheduleDaily3AM))]TimerInfo timerInfo, TextWriter log)
        {

            var unitOfWork = new UnitOfWork();
            var SomeSetting = int.Parse(ConfigurationManager.AppSettings["SomeSetting"]);


        unitOfWork.Execute.Something();
    }
}

}

由于我对自己的选项理解有限,我想到的第一个想法是潜在地为方法(即上面示例中的 SomeTask 或 ExecuteTask)添加一个启用/禁用开关,该开关可能读取其真/假App.config 中定义的设置中的值。虽然,不精通 C#...我不相信这是可能的。这样做,该函数可能仍会运行,但由于方法被禁用,因此不会采取任何操作。

我觉得似乎有一个解决方案更多地依赖于 Azure 配置,而不是功能级代码更改。任何帮助表示赞赏。

【问题讨论】:

    标签: c# app-config azure-webjobs azure-webjobssdk


    【解决方案1】:

    经过研究,我找到了满足您需求的三种方法。

    1. 根据不同的环境创建多个实例,并将您的 WebJobs 发布到不同的实例。
    2. 使用暂存槽。
    3. 使用“ASPNETCORE_ENVIRONMENT”应用设置。我将在下面展示如何:

    在门户上配置ASPNETCORE_ENVIRONMENT。 (此设置在本地机器的 launchSettings.json 文件中)

    像这样修改你的代码(只是为了展示它是如何工作的,更多信息参见文档):

    if (_env.IsDevelopment())
        {
            Console.WriteLine(_env.EnvironmentName); //modify with your function
        }
        else if (_env.IsStaging())
        {
            Console.WriteLine(_env.EnvironmentName); //modify with your function
        }
        else
        {
            Console.WriteLine("Not dev or staging"); //modify with your function
        }
    

    这里是关于Use multiple Environments in ASPNET CORE的参考,

    【讨论】:

      猜你喜欢
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 2022-10-17
      • 2016-09-10
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多