解密 .Net Core 3.1 中的 app.config 连接字符串



我有以下控制台应用程序代码:

// Get the app config file.
var configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Get the sections to unprotect.
ConfigurationSection connStrings = configuration.ConnectionStrings;
string connection = null;
if (connStrings != null)
{
// UNPROTECT
connStrings.SectionInformation.UnprotectSection();
connection = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
}

这段代码在 Framework 4.8 上运行良好,但是当我在 Core 3.1 上尝试时,它会抛出

平台不支持异常

在"取消保护"代码中。

这是在同一个工作站和所有东西上。

ConfigurationManager 和 SectionInformation 的官方文档都显示了与 Core 3.0 和 3.1 的兼容性。

我猜这些类与 Core "兼容",以方便访问配置文件,但解密不是因为解密密钥存储在框架中,而是 Core 是跨平台的,因此无法访问密钥。(是吗?

如果此平台不支持连接字符串解密,是否有加密/解密连接字符串的首选替代方法?

我看了高看低,但似乎什么也找不到。

注意:解密加密连接字符串的能力至关重要!

ConfigurationManager类在 DotNetCore 中已被弃用,它已被替换为您可以使用ConfigurationBuilder类构造的IConfiguration类,下面是加载 json 文件的示例(请注意,您需要两个 nuget 依赖项,分别是Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration.Json):


var config = new ConfigurationBuilder()
.AddJsonFile("Config.json", true) // bool to say whether it is optional
.Build()

如前所述,这将为您提供IConfiguration类的实例,该实例在此处记录,但与ConfigurationManager非常相似

config.json示例:

{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}

最新更新