Fil*_*dor 5 c# azureservicebus azure-functions
在我们在 Visual Studio 中本地开发的函数应用程序中,我们有两个运行环境:测试和开发。
现在,我们有一个local.settings.json和两个各自的特定环境,local.settings.<environment>.json
它们工作得很好 -但有一个例外:函数触发注释中使用的值。
它们似乎在实际过程开始之前就已经解决了local.settings.json。
它是 dotnet 6 v4,独立进程。该项目设置为读取local.settings.json 和 local.settings.<environment>.json。
相关文件如下所示:
lauchSettings.json
{
"profiles": {
"My.Project.Functions": {
...,
"environmentVariables": {
"AZURE_FUNCTIONS_ENVIRONMENT": "Test"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
local.settings.Test.json
{
"myTopicName": "some-topic-for-test",
"myServiceBusConnection": "Endpoint=sb://MyTestBusURI"
}
Run Code Online (Sandbox Code Playgroud)
MyFunction.cs
public class MyFunction
{
[Function(nameof(MyFunctionAsync))]
public async Task MyFunctionAsync(
[ServiceBusTrigger("%myTopicName%", Connection = "myServiceBusConnection")] // <-- error here
MyMessageEntity myMessageEntity)
{
// resolving environment-specific values _here_ will work perfectly fine.
await _someIrrelevantService.DoSomethingAsync(myMessageEntity);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们没有myTopicName并且myServiceBusConnection仅local.settings.json在环境特定设置中,则应用程序将无法启动,并抱怨找不到相应的设置。
我们真的希望避免复制设置,使这种过程变得乏味且容易出错。
我已经阅读了大量的 Microsoft 文档,不幸的是,这些文档从未谈到本地开发中的环境特定设置文件。所以,我担心这可能是不可能的,但是:
有谁知道如何使工具尊重注释中的环境特定设置?(“你不能”将是一个有效的答案,所以我可以继续寻找解决方法而不会良心不安:))
根据要求:我们像这样加载配置:
return hostBuilder
.ConfigureAppConfiguration((context, builder) =>
{
builder.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"local.settings.{context.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
})
Run Code Online (Sandbox Code Playgroud)
这工作正常,但无关紧要,因为它是在解析注释的引用之后发生的。
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |