C# 无法读取local.settings.json中定义的连接字符串
基本上,我可以让我的代码从local.settings.json加载连接字符串 我使用VisualStudio2019在本地开发HTTP触发的Azure函数(v3)。 我定义了一个C# 无法读取local.settings.json中定义的连接字符串,c#,azure-functions,azure-functions-core-tools,C#,Azure Functions,Azure Functions Core Tools,基本上,我可以让我的代码从local.settings.json加载连接字符串 我使用VisualStudio2019在本地开发HTTP触发的Azure函数(v3)。 我定义了一个Startup类,该类初始化并注入CosmosDB客户端,以便所有函数都可以引用它(如下所示)。 在实例化CosmosDB客户端之前,ConfigurationManager用于获取CosmosDB的连接字符串 使用系统配置; 使用AttendanceTaking.Infra.CosmosDB; 使用Microsoft
Startup
类,该类初始化并注入CosmosDB客户端,以便所有函数都可以引用它(如下所示)。
在实例化CosmosDB客户端之前,
ConfigurationManager
用于获取CosmosDB的连接字符串
使用系统配置;
使用AttendanceTaking.Infra.CosmosDB;
使用Microsoft.Azure.Cosmos.Fluent;
使用Microsoft.Azure.Functions.Extensions.DependencyInjection;
使用Microsoft.Extensions.DependencyInjection;
[assembly:FunctionsStartup(typeof(Hello.Startup))]
名称空间你好
{
类启动:函数启动
{
公共覆盖无效配置(IFunctionsHostBuilder)
{
builder.Services.AddSingleton((服务)=>
{
var connectionString=getConnectionString(“CosmosDB”);
var cosmosClientBuilder=新的cosmosClientBuilder(connectionString);
返回cosmosClientBuilder.Build();
});
}
私有字符串getConnectionString(字符串configName)
{
返回ConfigurationManager.ConnectionString[configName].ConnectionString;
}
}
}
连接字符串本身在local.settings.json
中定义,如下所示
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
},
"ConnectionStrings": {
"CosmosDB": "AccountEndpoint=account-endpoint-secret;"
}
}
然后我运行我的函数,每当我向HTTP端点发送请求时,ConfigurationManager.ConnectionString[configName].ConnectionString代码>,说
System.NullReferenceException:“对象引用未设置为对象的实例。”
System.Configuration.ConnectionStringSettingsCollection.this[string]。get返回null
我在这里做错了什么?您可以在这里使用两种方法
环境变量
我认为您可以使用环境变量
获取连接字符串,因为您可以在本地开发和在Azure中运行时调用System.Environment.GetEnvironmentVariable
来获取连接字符串
获取环境变量的方法如下:
public static string GetEnvironmentVariable(string name)
{
return name + ": " +
System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
}
然后可以使用此格式获取环境变量的值:
GetEnvironmentVariable("ConnectionStrings:CosmosDB");
有关更多详细信息,请参阅官方网站
ASP.NET核心配置
正如Chris在评论中提到的,您可以使用ASP.NET核心配置
。有关更多信息,请参阅此官方文件不再支持ConfigurationManager
。使用asp.net核心配置。天啊。。。非常感谢你。。。