启动类使用加密的字符串添加数据库上下文

时间:2018-12-24 10:39:17

标签: c# asp.net-core

在我的.net core 2.2应用程序中,我正在尝试在startup.cs ConfigureServices方法中使用以下代码创建数据库上下文:'

var connectionString = Configuration.GetSection("Appsettings")["MyConnectionString"];

services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connectionString));

尽管我在appsettings中的连接字符串已加密,所以我将如何使我的代码正常工作。

我有一个不是静态的或不包含静态方法的服务类。有一个Decrypt方法。 因此,我无法在startup.cs中调用MyService.Decrypt(connectionString)。

我可以想到的替代方法是做类似的事情

var myService = new MyService();
var decrypted = myService.Decrypt(connectionString);

但是MyService有其自己的依赖关系,然后我需要将其传递给构造函数。

我不确定是否有其他方法可以做到这一点。

1 个答案:

答案 0 :(得分:1)

StartUp类可以注入依赖项。您可以执行以下操作:

private IConfiguration _configuration;
  public Startup(IConfiguration configuration)
    {
        _configuration = configuration;
    }

像这样应用:

public void ConfigureServices(IServiceCollection services)
{
string theEncryptedOne =_configuration.GetConnectionString("MyConnectionString");
string decrypted =//Do something with the encrypted string. 
//Pass it when done.
services.AddDbContext<MyDbContext>(option=>option.UseSqlServer(decryptedString));
}