gpt4 book ai didi

c# - 是否可以在 Azure 函数中保留环境设置?

转载 作者:行者123 更新时间:2023-12-03 05:30:32 27 4
gpt4 key购买 nike

我创建了一个 Azure 函数,它从网站检索新的表单输入,对其进行处理并使用 API 调用将结果存储在另一个系统中。我只想检索之前尚未处理过的表单输入。这是由网站支持的。我正在读取已处理的最新表单输入的时间戳。这工作得很好。

我使用以下函数从 Azure 函数环境读取设置:

private static string GetEnvironmentVariable(string name)
{
return System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
}

处理完表单输入后,我使用以下函数存储表单的时间戳:

private static void SetEnvironmentVariable(string name, string value)
{
System.Environment.SetEnvironmentVariable(name, value, EnvironmentVariableTarget.Process);
}

一切似乎都运行良好。我在日志中看到表单输入不会被多次处理。但是,当我查看 Azure 仪表板中的环境变量时,我可以看到该变量的初始值仍然存在。当环境“关闭”并重新启动时(例如,更改另一个环境变量的值后),将使用此初始值。

我尝试将目标从“进程”更改为“机器”,但这会导致访问控制错误。 SO 上有一些问题与我的问题相关,但没有一个问题能为我提供适合我情况的答案。

我想知道是否:

  1. 环境变量是/适合我的用例的解决方案;
  2. 如果是这样,如何防止变量在重置 Azure 环境后重置为其初始值。

提前致谢!

最佳答案

首先,Environment.SetEnvironmentVariable 方法已经适用于您的案例。

这是一个answer来自沉快:

When you set the variable by Environment.SetEnvironmentVariable, itwill not show in application setting. But we can use it byEnvironment.GetEnvironmentVariable as expected. Although the solutionyou mentioned is not so good, but it can implement your requirement.The adverse effect is when you restart the function app, the variableswill be lost.

关于目标机器:环境变量是从 Windows 操作系统注册表中的 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 键存储或检索的。该值只能用于在 Windows 系统上运行的 .NET 实现。

<小时/>

一种实现但不在代码内部设置的方法:

In App Service, you can set app settings outside of your app code.Then you can access them in any class using the standard ASP.NET Coredependency injection pattern:

using Microsoft.Extensions.Configuration;

namespace SomeNamespace
{
public class SomeClass
{
private IConfiguration _configuration;

public SomeClass(IConfiguration configuration)
{
_configuration = configuration;
}

public SomeMethod()
{
// retrieve nested App Service app setting
var myHierarchicalConfig = _configuration["My:Hierarchical:Config:Data"];
// retrieve App Service connection string
var myConnString = _configuration.GetConnectionString("MyDbConnection");
}
}
}

关于c# - 是否可以在 Azure 函数中保留环境设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65875773/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com