此问题与以下帖子有关,可能会有所帮助:Azure DevOps CI/CD and Separating Connection Strings from Source Control
根据Imar Spaanjaars的文章ASP.NET N-Layered Applications
,我目前正在从事一个N层项目我想可以说Azure Key Vault用于从应用程序本身中提取秘密。
目标
我想使用此N层概念实现Azure Key Vault。我有一个位于NLayer-Spaanjaars.ContactManager
的示例项目问题
我试图弄清楚如何使用Key Vault Syntax Reference通过Entity Framework正确检索秘密(连接字符串)。
更新2019/2/22
如评论中所述,我试图找出如何在运行时如何使用非核心{{上的override
的值来Key Vault
或.Net Web API
1}}应用。
答案 0 :(得分:0)
我设法通过像这样修改DbContext来使它工作:
public class MyContext : BaseDataContext {
public MyContext()
: this(GetDbConnection()) {
}
public MyContext(string connectionString)
: base(connectionString) {
}
public static string GetDbConnection() {
// Get the value from the AppSettings section in the Web.config file that will be updated by Key Vault
var connectionString = ConfigurationManager.AppSettings["{key-vault-secret-name}"];
// Return the connection string value above, if blank, use the connection string value expected in the Web.config
return string.IsNullOrWhiteSpace(connectionString) ? "MyContext" : connectionString;
}
}