部署时Azure函数未绑定到appsettings

部署时Azure函数未绑定到appsettings,azure,azure-functions,Azure,Azure Functions,我有一个用C#编写的Azure Function应用程序,其中Visual Studio使用Functions SDK的3.0.9版。在与csproj文件和host.json相同的目录中,我有一个appsettings.json文件,其中包含以下内容: { “测试队列”:“测试, “myOptions”:{ “批量大小”:5000 } } 当我在本地运行该函数时,该函数工作正常,但由于某些原因,它在部署到Azure时似乎没有绑定到appsettings文件。我使用以下启动类: 公共类启动:函数

我有一个用C#编写的Azure Function应用程序,其中Visual Studio使用Functions SDK的3.0.9版。在与csproj文件和host.json相同的目录中,我有一个appsettings.json文件,其中包含以下内容:

{
“测试队列”:“测试,
“myOptions”:{
“批量大小”:5000
}
}
当我在本地运行该函数时,该函数工作正常,但由于某些原因,它在部署到Azure时似乎没有绑定到appsettings文件。我使用以下启动类:

公共类启动:函数启动
{
公共覆盖无效配置AppConfiguration(IFunctionsConfigurationBuilder)
{
builder.ConfigurationBuilder
.SetBasePath(环境.CurrentDirectory)
.AddJsonFile(“appsettings.json”,可选:false,reloadOnChange:true)
.AddenEnvironmentVariables();
var builconfig=builder.ConfigurationBuilder.Build();
var keyVaultName=builconfig[“AzureKeyVaultName”];
如果(!string.IsNullOrEmpty(KeyVault名称))
{
var azureServiceTokenProvider=新azureServiceTokenProvider();
var keyVaultClient=newkeyvaultclient(newkeyvaultclient.AuthenticationCallback(azureservicetokeprovider.KeyVaultTokenCallback));
builder.ConfigurationBuilder.AddAzureKeyVault($“https://{keyVaultName}.vault.azure.net/”;
}
builder.ConfigurationBuilder
.AddJsonFile(“local.settings.json”,true)
.AddenEnvironmentVariables()
.Build();
}
公共覆盖无效配置(IFunctionsHostBuilder)
{
FunctionsHostBuilderContext上下文=builder.GetContext();
builder.Services.AddOptions()
.Configure((设置、配置)=>
{
configuration.GetSection(“myOptions”).Bind(设置);
});
}   
}
我有这样一个函数类:

公共类MyFunction
{
私有只读MyOptions选项;
公共MyFunction(IOOptions选项)
{
this.options=options.Value;
}
[函数名(“测试”)]
公共异步任务运行(
[QueueTrigger(“%test queue%”)MyParameters参数,
ILogger日志)
{
log.LogInformation($“批大小:{options.BatchSize}”);
}
}
问题是,函数似乎没有使用appsettings文件。我在启动时收到一个InvalidOperationException,说“%test queue%”没有解析为值。“我可以摆脱队列绑定并硬编码队列名称。这使得函数可以正常运行,但是日志文件显示批大小是0而不是5000


同样,它在本地运行时有效,但在部署时无效。在启动时注册appsettings文件时,
可选
标志为false,因此必须找到它。

我通过替换

builder.ConfigurationBuilder
.SetBasePath(环境.CurrentDirectory)
.AddJsonFile(“appsettings.json”,可选:false,reloadOnChange:true)
.AddenEnvironmentVariables();

FunctionsHostBuilderContext=builder.GetContext();
builder.ConfigurationBuilder
.AddJsonFile(Path.Combine(context.ApplicationRootPath,“appsettings.json”),可选:false,reloadOnChange:false)
.AddenEnvironmentVariables();

这仍然使我难以对队列名称进行编码,但batchSize变量至少已经设置好了。

通过替换

builder.ConfigurationBuilder
.SetBasePath(环境.CurrentDirectory)
.AddJsonFile(“appsettings.json”,可选:false,reloadOnChange:true)
.AddenEnvironmentVariables();

FunctionsHostBuilderContext=builder.GetContext();
builder.ConfigurationBuilder
.AddJsonFile(Path.Combine(context.ApplicationRootPath,“appsettings.json”),可选:false,reloadOnChange:false)
.AddenEnvironmentVariables();
这仍然使我难以对队列名称进行编码,但batchSize变量至少已经设置好了