Ler*_*eme 55 c# azure azure-functions
如何向Azure功能添加或访问app.config文件以添加数据库连接字符串?如果您不应该添加app.config并且有更好的方法来访问外部数据库来执行该功能,请告诉我最佳实践.谢谢!
Tod*_*and 41
Jan_V 差不多把它钉了下来,这让我在这里试验了这个local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true;",
"AzureWebJobsDashboard": ""
},
"ConnectionStrings": {
"MyConnectionString": "[YourConnectionStringHere]"
}
}
Run Code Online (Sandbox Code Playgroud)
这允许您使用ConfigurationManager.ConnectionStrings[]我们都习惯的.
var sqlConnection = ConfigurationManager
.ConnectionStrings["MyConnectionString"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)
Dav*_*bbo 33
执行此操作的最佳方法是从Azure门户添加连接字符串:
然后,它们将使用与web.config中相同的逻辑可用,例如
var conn = System.Configuration.ConfigurationManager
.ConnectionStrings["MyConn"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用的是非.NET语言,则可以使用App Settings,它可以在运行时成为您的函数可以访问的简单环境变量.
小智 19
Configuration Manager将由函数运行时v2中的新Asp.Net核心配置系统替换.
因此,如果您使用.Net Core,您应该关注John Gallants博客文章:https: //blog.jongallant.com/2018/01/azure-function-config/
bat*_*aci 14
我在这里经历了几个类似的问题和答案.他们中的许多人要么误导,要么假设每个人都处于同一水平,并且了解天蓝色功能是如何运作的.像我这样的新手没有答案.我想在此总结一下我的解决方案.
最重要的是我们了解local.settings.json文件不是为了AZURE.这是在名称显然是在本地运行您的应用程序.所以解决方案与此文件无关.
App.Config或Web.Config不适用于Azure功能连接字符串.如果您有数据库层库,则无法像使用Asp.Net应用程序那样使用其中任何一个覆盖连接字符串.
为了使用,您需要Application Settings在Azure功能下的azure门户上定义连接字符串.有连接字符串.你应该复制你的DBContext的连接字符串.如果它是edmx,它将如下所示.有连接类型,我使用它SQlAzure但我用Custom测试(有人声称只适用于自定义)适用于两者.
metadata = res:// /Models.myDB.csdl|res:// /Models.myDB.ssdl|res://*/Models.myDB.msl;provider=System.Data.SqlClient;provider connection string ='data source = [yourdbURL]; initial catalog = myDB; persist security info = True; user id = xxxx; password = xxx; MultipleActiveResultSets = True; App = EntityFramework
这是自动生成的DbContext
namespace myApp.Data.Models
{
public partial class myDBEntities : DbContext
{
public myDBEntities()
: base("name=myDBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
}
Run Code Online (Sandbox Code Playgroud)
这是你创建的新的部分类
namespace myApp.Data.Models
{
[DbConfigurationType(typeof(myDBContextConfig))]
partial class myDBEntities
{
public myDBEntities(string connectionString) : base(connectionString)
{
}
}
public class myDBContextConfig : DbConfiguration
{
public myDBContextConfig()
{
SetProviderServices("System.Data.EntityClient",
SqlProviderServices.Instance);
SetDefaultConnectionFactory(new SqlConnectionFactory());
}
}
}
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)var connString = ConfigurationManager.ConnectionStrings["myDBEntities"].ConnectionString; using (var dbContext = new myDBEntities(connString)) { //TODO: }
Jes*_*aya 11
Todd De Land的回答仅适用于当地环境.但是,根据此文档,已发布的Azure功能需要将连接字符串存储为应用程序设置并通过检索GetEnvironmentVariable.
不需要添加System.Configuration程序集引用.
string cs = Environment.GetEnvironmentVariable("MyConnectionString",EnvironmentVariableTarget.Process);
Run Code Online (Sandbox Code Playgroud)
以下是使环境字符串检索的步骤都局部和出版环境
local.settings.json请在Values节点内指定连接字符串portal.azure.com > your Azure Function > function node > Application SettingsGetEnvironmentVariable从Azure函数调用(无法获得stackoverflow以正确显示此代码)而已.
Ogg*_*las 11
除了@ToddDeLand 的回答。
有了local.settings.json这样的:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true;",
"AzureWebJobsDashboard": ""
},
"ConnectionStrings": {
"MyConnectionString": "[YourConnectionStringHere]"
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样访问你的连接字符串,不需要 NuGets。
var connectionString = Environment.GetEnvironmentVariable("ConnectionStrings:MyConnectionString");
Run Code Online (Sandbox Code Playgroud)
微软在这里推荐这种方法:
如果将连接字符串添加到值:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true;",
"AzureWebJobsDashboard": "",
"MyConnectionString": "[YourConnectionStringHere]"
}
}
Run Code Online (Sandbox Code Playgroud)
您可以像这样访问连接字符串:
var connectionString = Environment.GetEnvironmentVariable("MyConnectionString");
Run Code Online (Sandbox Code Playgroud)
资料来源:
https://github.com/Azure/Azure-Functions/issues/717#issuecomment-400098791
| 归档时间: |
|
| 查看次数: |
31385 次 |
| 最近记录: |