当前位置: 首页 > 知识库问答 >
问题:

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

燕鸿文
2023-03-14

在我的Azure Function中,我使用的库通过ConfigurationManager的ConnectionString建立与SQL服务器的连接,如下所示:

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

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

我试着把它放在应用程序设置中。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..." 
    } 
  }
}

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

编辑2:我搞砸了“连接字符串”的嵌套。它必须与“值”处于同一嵌套级别:

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

共有3个答案

鲁华茂
2023-03-14

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

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

楚知
2023-03-14
// C# Environment Variables example for Azure Functions v1 or v2 runtime
// This works all the way up to but not including .NET Core 2.0
var clientId = Environment.GetEnvironmentVariable("ClientId");
var clientSecret = Environment.GetEnvironmentVariable("ClientSecret");
var aadDomain = Environment.GetEnvironmentVariable("AADDomain");

请记住您在local.settings中所做的设置。json将不会反映在azure中。请在Azure门户的应用程序设置中添加您的值。请单击链接-https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings

翟单弓
2023-03-14

添加文件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"];
 类似资料:
  • 我有一个函数应用,定义如下 其中< code > let-test-this-in 和< code > let-test-this-out 是连接字符串为< code >“defaultendpointsprocol=”的存储帐户下现有存储队列的名称...;account name =…;AccountKey= ... "(直接从门户中的访问键-连接字符串复制而来)。我发布时生成的function

  • 问题内容: 我来自ASP .Net背景。我现在正在编写一个Java程序,以将数据从DB2数据库导入到Oracle数据库中。我已经完成了导入此数据的基本功能。 我的问题是,我将所有连接属性都编码为Java程序本身。是否有任何“最佳实践”方法将连接字符串详细信息存储在类似于我们用于ASP .Net的web.config的配置文件中?Java有什么机制可以实现这一目标吗?还是只需要使用I / O操作从简

  • 我正在使用Azure功能完成本指南,以将IoTHub消息提交到Azure存储。我在第5d节,在那里我需要为我的函数创建一个新的服务总线连接字符串,但无论我使用什么,包括指南中的格式: 我得到一个错误: 不是有效的服务总线连接字符串。 我尝试使用IoT中心endpoint中的,以及iothubboss访问策略中的,但它再次拒绝它。 然后我创建了一个新的服务总线,并使用了这个连接(见下面我的回答和最初

  • Hyperledger Composer使用连接配置文件连接到运行时。 创建连接配置文件 1.创建一个名为connection.json的新文件,其中包含Hyperledger Fabric v1.0的以下信息。} 为Hyperledger Fabric v1.0创建连接配置文件,使用以下格式: { "type": "hlfv1", "orderers":

  • 我正在开发一个程序,该程序将获取一个文本文件,并将数字从0-99转换为文字(即0)- 这里有几行输出(每一行都是不同的system.out行): 这是输入文件上的三行: 如您所见,数字随系统一起添加和打印。从函数convertToWord中退出,但一旦返回main,就会丢失。如何跨函数将这些转换附加到字符串?

  • 我已经成功地建立了一个混合连接,将我的Azure web应用程序连接到本地SQL-server。我添加了主要的本地网关连接字符串,它与命令一起列出:< code > Get-hybrid connection 。 但是它并不总是保持连接。现在我想知道如何处理辅助连接字符串。如果我尝试使用添加它,我会得到这个错误: Add-HybridConnection : Exist Configuration