以编程方式为 .NET 5 Azure Function ServiceBusTrigger 连接字符串设置环境变量?
Posted
技术标签:
【中文标题】以编程方式为 .NET 5 Azure Function ServiceBusTrigger 连接字符串设置环境变量?【英文标题】:Set Environment Variable for .NET 5 Azure Function ServiceBusTrigger connection string programmatically? 【发布时间】:2022-01-12 19:59:46 【问题描述】:首先,我知道连接字符串来自 Azure 门户/local.settings.json 上的配置,并且它是一个环境变量,您可以通过以下方式访问:
Environment.GetEnvironmentVariable("Name", EnvironmentVariableTarget.Process);
我正在尝试从 appsettings.json 设置 ServiceBusTrigger 连接字符串。 我在this blog on how to do it. 之后添加了一个 appsettings.json 文件,我可以从 appsettings.json 文件访问设置,但是在 Program.cs 中,当我尝试使用以下设置环境变量时:
.ConfigureAppConfiguration(c =>
var config = c.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile("appsettings.json", true, true)
.AddEnvironmentVariables()
.Build();
// Setting the Environment Variable for the connection string
Environment.SetEnvironmentVariable(config["ConnectionString:Name"], config["ConnectionString:Value"]);
)
其中“名称”是函数中传递给连接的内容,“值”是连接字符串,我收到以下错误:
Microsoft.Azure.WebJobs.ServiceBus:Microsoft Azure WebJobs SDK ServiceBus 连接字符串“名称”缺失或为空。
我所说的连接:
public async Task Run(ServiceBusTrigger("myqueue", Connection = "Name")] string myQueueItem, FunctionContext) // Some Implementation
我试图避免在 Azure 门户的应用配置中设置连接字符串“名称”。有没有办法以编程方式做到这一点?
【问题讨论】:
【参考方案1】: 当您通过Environment.SetEnvironmentVariable
设置变量时,它不会显示在应用程序设置中。但我们可以按预期通过Environment.GetEnvironmentVariable
使用它。
SetEnvironmentVariable(String,String)
创建、修改或删除存储在当前进程中的环境变量。
虽然你提到的解决方案不是很好,但它可以实现你的要求。不利影响是重新启动函数应用时,变量会丢失。
有关SetEnvironmentVariable
的更多信息,请参阅此MSFT documentation
【讨论】:
以上是关于以编程方式为 .NET 5 Azure Function ServiceBusTrigger 连接字符串设置环境变量?的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式将文件从 Azure Blob Storage 传输到 Google Cloud Storage