C# Azure函数从配置访问连接字符串

C# Azure函数从配置访问连接字符串,c#,azure-sql-database,azure-functions,C#,Azure Sql Database,Azure Functions,我在Azure Linux环境中托管了Azure Function V3。我正在尝试从配置部分读取连接字符串。但我不明白。我尝试将连接字符串放在应用程序设置和连接字符串部分,如下所示 { "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "AzureWebJobsDashboard": "UseDevelopmentStorage=true" }

我在Azure Linux环境中托管了Azure Function V3。我正在尝试从配置部分读取连接字符串。但我不明白。我尝试将连接字符串放在
应用程序设置
连接字符串
部分,如下所示

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "DefaultConnection": "<My connection string>"
  }
}

我正在使用依赖项注入,我的
Startup
类如下所示

using BHD.Data.Data;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;

[assembly: FunctionsStartup(typeof(BHD.AzureFunctions.Startup))]
namespace BHD.AzureFunctions
{
    class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var sqlConnection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            builder.Services.AddDbContext<ApplicationDbContext>(
                options => options.UseSqlServer(sqlConnection));
        }
    }
}

在Azure Functions 2+中获取配置的方法是
IConfiguration
,而不是
ConfigurationManager

您可以将
IConfiguration
注入到大多数可能注入其他内容的地方,但在
Startup()
中,您需要使用类似的内容

IConfiguration
在Azure中托管时将自动读取函数应用程序设置,在本地运行时将自动读取
local.settings.json


编辑(参考文献):

这方面的文档既不清楚也不容易找到。关于GitHub也有很多相关的讨论和困惑

主要来源是。在其中,几乎很容易被忽略:

函数主机注册许多服务。以下服务可以安全地作为应用程序中的依赖项:

[…]
Microsoft.Extensions.Configuration.IConfiguration
[…]

它还说:

应用程序设置中定义的值在IConfiguration实例中可用


主人为你做这件事;您无需执行任何操作,如上所述,它会根据您的托管上下文自动从正确的源获取设置。

您是否尝试过读取环境变量?@CarlosGarcia,是的,我尝试过环境变量,但我希望它能与
连接字符串
设置一起工作。下面Sellotape的回答很有帮助。非常感谢。谢谢你,Sellotape,我可以知道你在哪里找到使用
I配置的方法吗?如果你能链接到这个页面就太好了。@PriyankPanchal-我已经用一些参考资料更新了答案。