【发布时间】:2025-12-26 08:25:11
【问题描述】:
在我的 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”。 如here 所述,在“ConnectionStrings”中添加“DbConStr2”会导致编译错误。可能是因为我没有使用 .NET Core?
编辑2: 我搞砸了“ConnectionStrings”的嵌套。它必须与“值”处于同一嵌套级别:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"AzureWebJobsDashboard": "",
"MyServiceBusReader": "Endpoint=sb://xxxx="
},
"ConnectionStrings": {
"DbConStr": "data source=(localdb)\\MS..."
}
}
【问题讨论】:
-
您使用的是 .NET Core 吗?我假设您使用的是
application.json文件。 -
不,我不使用 .NET Core。我认为使用 application.json 就是 Azure Functions 的工作原理?
-
实际上,至少在我看来,启动 .NET 函数使用 v4.6,所以您是正确的,因为它还不是 .NET Core。
-
这是否意味着也应该可以使用 app.config 而不是 application.json?
-
根据您的编辑,您的连接字符串绝对应该在
ConnectionStrings节点下。您可以访问任何设置吗?我可能会尝试确保文件被正确命名为appsettings.json,以防您的函数配置为按约定查找该文件名。
标签: c# azure azure-functions