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

标签 c# asp.net-core

我们有一个 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/

相关文章:

c# - 如何使用同一个企业应用程序获取不同的广告用户列表?

c# - 如何将 GetStringAsync 结果反序列化为翻译文本

jquery - 通过 jQuery.html() 传递时 ASP 页面链接不可用

c# - NET Core Cors 抛出错误

c# - ASP.NET Core 移动后端 API [错误] : This appname. 找不到 azurewebsites.net 页面

c# - 当在 stringbuilder 上调用append时,我们是否将字符串添加到堆中?

c# - 从 LinqPad 中的类运行

c# - 如何从 MemoryStream 中删除数据

c# - Visual Studio 2022 中的 Microsoft Identity Platform 依赖项配置

c# - 错误 WebHostBuilder 只允许创建 WebHost 的单个实例