在我的.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有其自己的依赖关系,然后我需要将其传递给构造函数。
我不确定是否有其他方法可以做到这一点。
答案 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));
}