访问program.cs中的数据库上下文

Tac*_*yon 9 c# kestrel-http-server asp.net-core

有没有办法访问文件中 .NET Core 应用程序的数据库上下文program.cs?我基本上希望使用存储在数据库中的特定选项来配置 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);
                    });
                });
Run Code Online (Sandbox Code Playgroud)

itm*_*nus 4

技巧是如何在单例 \xef\xbc\x9a 中创建范围服务

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