在我的Azure函数中,我使用的是一个库,它通过ConfigurationManager通过ConnectionString建立到SQL Server的连接,如下所示:
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..."
}
}
问题是,例如Web.config
文件中已知的连接字符串由两部分组成:
但是由于配置文件使用JSON格式,因此无法同时指定两个参数。
在提出问题时,无法在中设置提供者名称appsetings.json
(现已重命名为local.settings.json
)。但Azure的功能团队改变这一点,并设置一个默认值providerName
来System.Data.SqlClient
,这解决了这个问题。
该providerName
默认System.Data.SqlClient
。您无需手动设置。只需添加您的连接字符串X并通过阅读即可ConfigurationManager.ConnectionStrings["X"]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句