Azure Key保管库连接字符串和N层设计

时间:2019-02-21 14:47:33

标签: c# entity-framework azure azure-keyvault n-layer

此问题与以下帖子有关,可能会有所帮助: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}}应用。

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;
    }
}