我有一个用 C# 编写并在 .NET 8.0 上运行的 Azure 函数。它定期检查我的 Dynamics365 系统中的某些内容。
我已安排此功能每周运行两次,并且我有一个应用程序设置(在我的
local.settings.json
文件中本地配置,并在 Azure 应用程序设置中在线配置),其中包含上次检查的日期。我读出了这个配置值,以了解我需要检查多远的时间。这个效果很好。
现在,我的想法是:当我今天运行检查时,我想更新该配置设置,以便在下次运行时,我再次知道要检查多远。但这似乎比我想象的更具挑战性......
这是我的 Azure 函数的骨架,读出“上次检查日期”设置:
程序.cs:
var host = new HostBuilder()
.ConfigureFunctionsWebApplication()
.ConfigureServices(services =>
{
services.AddApplicationInsightsTelemetryWorkerService();
services.ConfigureFunctionsApplicationInsights();
})
.Build();
host.Run();
MyFunction.cs:
public class MyFunction
{
private readonly IConfiguration _config;
public MyFunction(IConfiguration config)
{
_config = config;
}
[Function("MyFunction")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req)
{
// get config
string lastCheckDate = _config.GetValue<string>("LastCheckDate");
// actual function code follows here...
}
}
我希望能够使用此代码更新该设置:
_config["LastCheckDate"] = DateTime.Today.ToString("yyyy-MM-dd");
或者 - 可能是这个代码:
Environment.SetEnvironmentVariable("LastCheckDate", DateTime.Today.ToString("yyyy-MM-dd"));
但是两次尝试都未能更新我在 Azure 函数托管环境中的应用程序设置。
我有什么想法可以实现这一目标吗?
这可以使用 Azure SDK for .NET 中的 WebSiteResource.UpdateApplicationSettings
库中的
Azure.ResourceManager.AppService
方法来实现。无法从 Function App 框架内原生写入应用程序设置。