我们有一个ASP.NET核心启动类。在构造函数中,我们执行带有一些初始化的后端数据库调用。如果失败并引发异常,则ASP.NET核心应用程序将显示消息“启动应用程序时发生异常”。
我们希望系统在后续请求中再次执行启动。
这可能吗?
答案 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