在下一个请求时重试启动异常

时间:2018-08-06 12:56:10

标签: c# asp.net-core

我们有一个ASP.NET核心启动类。在构造函数中,我们执行带有一些初始化的后端数据库调用。如果失败并引发异常,则ASP.NET核心应用程序将显示消息“启动应用程序时发生异常”。

我们希望系统在后续请求中再次执行启动。

这可能吗?

2 个答案:

答案 0 :(得分:2)

您不应该在Startup构造函数中执行任何逻辑。如果要在应用程序的开始执行一些操作,而不是在服务器真正启动之前,则应该在WebHost级别执行该操作。

默认情况下,Main中的Program.cs如下所示:

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 datbase上下文初始化数据库。看起来像这样:

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();

答案 1 :(得分:0)

对于运行代码"Third".equals(name),您可以将这些代码放在per request中,该代码将在每个请求上运行。

Middleware