我编写了一个 Azure Function,它通过 Gremlin Server 实例连接到 CosmosDB 数据库。为了创建 Gremlin Server 实例,我需要一些保存在中的凭据local.settings.json
在本地调试,并且我想通过依赖项注入来检索。
为此,我创建了一个名为的自定义类型CosmosDBCredentials
,我已向我的函数应用程序添加了一个 Startup 类,并且已向我的函数添加了一个构造函数。
这是我新创建的 Startup 类的代码:
namespace FunctionApp1
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddOptions<CosmosDBCredentials>()
.Configure<IConfiguration>((settings, configuration) =>
{
configuration.GetSection("CosmosDBCredentials").Bind(settings);
});
}
}
}
这是我的函数构造函数的代码,它接收选项作为参数:
public class Function1
{
private readonly CosmosDBCredentials _cosmosDBsettings;
public Function1(IOptions<CosmosDBCredentials> cosmosDBsettings)
{
this._cosmosDBsettings = cosmosDBsettings.Value;
}
当我在本地执行函数时,Startup 类在尝试绑定设置时抛出以下异常:
System.NullReferenceException:“对象引用未设置为
对象的实例。
配置为空。
我很困惑可能是什么导致了这种情况,因为我遵循了 Microsoft 文档如何使用选项和设置 https://learn.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection#working-with-options-and-settings至此。
关于为什么 Startup 类似乎无法解析 IConfiguration 的任何线索?
我对 .NET Core 项目中的依赖注入非常陌生,更具体地说是 Azure Functions,如果我的理解有误,请随时纠正我。