我们有一个 ASP.NET 核心启动类。在构造函数中,我们执行后端数据库调用并进行一些初始化。如果失败并引发异常,ASP.NET Core 应用程序将给出消息“启动应用程序时发生异常”。
我们希望系统在后续请求时再次执行启动。
这可能吗?
最佳答案
您不应该在 Startup
构造函数内执行任何逻辑。如果您想在应用程序开始时、服务器实际启动之前执行某些操作,那么您应该在 WebHost
级别执行此操作。
默认情况下,Program.cs
中的 Main
如下所示:
CreateWebHostBuilder(args).Build().Run();
您可以轻松地将其拆分并在调用 Run()
之前执行一些操作:
var webHost = CreateWebHostBuilder(args).Build();
// do something here
// if necessary, repeat that until it works, and then launch the server
webHost.Run();
由于网络主机已经构建,您甚至可以在此时访问服务器的服务。例如,此模式通常用于使用 Entity Framework 数据库上下文来初始化数据库。看起来像这样:
var webHost = CreateWebHostBuilder(args).Build();
using (var scope = webHost.Services.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<MyDataContext>();
// create the database, add some data, etc.
db.Database.EnsureCreated();
}
webHost.Run();
关于c# - 启动异常在下一个请求时重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51708193/