gpt4 book ai didi

c# - 在 program.cs 中访问数据库上下文

转载 作者:行者123 更新时间:2023-11-30 22:55:43 25 4
gpt4 key购买 nike

有没有办法在 program.cs 文件中访问 .NET Core 应用程序的数据库上下文?我基本上希望使用存储在数据库中的特定选项来配置 Kestrel,因此我需要访问数据库上下文。

我基本上是想做这样的事情:

WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSentry()
.UseKestrel(opts =>
{
opts.Listen(IPAddress.Any, 443, listenOptions =>
{
var storedCert = _db.Certificates.First(c => c.Id == 1);
var certBytes = Convert.FromBase64String(storedCert.CertificatePfx);
var certPassword = storedCert.CertificatePassword;

var cert = new X509Certificate2(certBytes, certPassword);

listenOptions.UseHttps(cert);
});
});

最佳答案

技巧是关于如何在单例中创建作用域服务:


public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(opt => {
var sp = opt.ApplicationServices;
using(var scope = sp.CreateScope() ){
var dbContext=scope.ServiceProvider.GetService<AppDbContext>();
var e= dbContext.Certificates.FirstOrDefault();
// now you get the certificates
}
});
}

关于c# - 在 program.cs 中访问数据库上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com