从Azure函数中的配置文件加载连接字符串

在我的Azure函数中,我正在使用一个库,它通过ConfigurationManager中的ConnectionString建立与SQL服务器的连接,如下所示:

var cs = System.Configuration.ConfigurationManager.ConnectionStrings["DbConString"].ConnectionString; DbConnection connection = new SqlConnection(cs); 

现在,当我通过应用程序设置在门户中设置连接字符串DbConString时,一切正常。 但是对于本地开发,我使用azure-functions-cli,不幸的是我不知道应该在哪里放置连接字符串以通过ConfigurationManager正确加载它。

我试图将它放在appsettings.json文件中,但没有成功。

编辑:我的appsettings.json目前看起来像这样:

 { "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "AzureWebJobsDashboard": "", "MyServiceBusReader": "Endpoint=sb://xxxx=", "DbConStr1": "data source=(localdb)\\MSSQLLocalDB;initial catalog=MyDb;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework", "ConnectionStrings": { "DbConStr2": "data source=(localdb)\\MS..." } } } 

但是我无法通过ConfigurationManager访问“DbConStr1”。 如此处所述,在“ConnectionStrings”中添加“DbConStr2”会导致编译错误。 也许是因为我没有使用.NET Core?

Edit2:我搞砸了“ConnectionStrings”的嵌套。 它必须与“值”处于相同的嵌套级别:

 { "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "AzureWebJobsDashboard": "", "MyServiceBusReader": "Endpoint=sb://xxxx=" }, "ConnectionStrings": { "DbConStr": "data source=(localdb)\\MS..." } } 

我有同样的问题,并使用.net标准(而不是核心)。 我将我的设置添加到Azurefunction的应用程序设置部分(在Azure门户中): –

在此处输入图像描述

然后我下载了一个function的拉链: – 在此处输入图像描述

此下载包含local.settings.json的副本,其中包含正确json格式的应用程序设置。 然后我通过ConfigurationManager.Appsettings [“mysetting”]访问它们

添加文件local.setting.json

在此处输入图像描述

  { { "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "AzureWebJobsDashboard": "UseDevelopmentStorage=true", "tenantId": "You tenantId", "resource": "https://management.azure.com/", "ClientSecret": "You ClientSecret, Key from App Registry", "ClientId": "You ClientId, Application ID from App registry", "subscriptionId": "You subscriptionId", "resourceGroupName": "Your resourceGroupName", "serverName": " Your SQL Server", "databaseNameDW": "Your Database", "apiversion": "2017-10-01-preview" } } 

在C#代码中使用:

 private readonly static string tenantId = ConfigurationManager.AppSettings["tenantId"]; 

您应该能够使用项目结构中的appsettings.json文件管理配置设置。 您可以在此处查看Azure Functions的文件夹结构示例。

此外, 此链接将提供有关如何使用.NET Core管理配置设置的一些详细信息。

问题是,从Web.config文件中Web.config的连接字符串由两部分组成:

  • 连接字符串本身和
  • 提供者名称。

但由于配置文件使用JSON格式,因此无法指定这两个参数。

在询问问题时,无法在appsetings.json设置提供程序名称(现在已重命名为local.settings.json )。 但Azure-Functions-team更改了此项并将providerName的默认值设置为System.Data.SqlClient ,从而解决了该问题。

providerName默认为System.Data.SqlClient 。 您不必手动设置它。 只需添加连接字符串X并通过ConfigurationManager.ConnectionStrings["X"]读取它。