c# - ASP.NET Core 中的应用程序启动代码

标签 c# asp.net-core startup

阅读documentation for ASP.NET Core , 有两种启动方法:Configure 和 ConfigureServices。

这些似乎都不是放置我想在启动时运行的自定义代码的好地方。也许我想在我的数据库中添加一个自定义字段(如果它不存在)、检查特定文件、将一些数据植入我的数据库等。我想运行一次的代码,就在应用程序启动时。

是否有首选/推荐的方法来执行此操作?

最佳答案

我同意 OP。

我的场景是,我想在服务注册表中注册一个微服务,但在微服务运行之前无法知道端点是什么。

我觉得 Configure 和 ConfigureServices 方法都不理想,因为它们都不是为执行这种处理而设计的。

另一种情况是想要预热缓存,这也是我们可能想要做的事情。

已接受的答案有多种选择:

  • 创建另一个在您的网站之外执行更新的应用程序,例如部署工具,它在启动网站之前以编程方式应用数据库更新

  • 在您的 Startup 类中,使用静态构造函数确保网站已准备好启动

更新

我认为最好的做法是像这样使用 IApplicationLifetime 接口(interface):

public class Startup
{
    public void Configure(IApplicationLifetime lifetime)
    {
        lifetime.ApplicationStarted.Register(OnApplicationStarted);
    }

    public void OnApplicationStarted()
    {
        // Carry out your initialisation.
    }
}

关于c# - ASP.NET Core 中的应用程序启动代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39047229/

相关文章:

c# - 备份和恢复 MS SQL 数据库

c# - 从 C# 调用带有嵌入空格 (`` XXX YY`` 的 F# 勾选函数名称

c# - 如何在 ASP.net Core Web API 和 Angular 13 中上传图片

c# - 在启动中获取 Web 主机名

jakarta-ee - Java EE 应用程序启动失败

postgresql - initdb : initializing pg_authid . .. FATAL:索引表达式的数量错误

c# - 使用 Linq 计算 ObservableCollection 值的总和

c# - 银光 TLS/SSL

c# - .NET Core 2 - 从启动中调用存储库方法

android - 基于 Android 示例的 Flutter 应用程序在 BOOT_COMPLETED 上自动启动不起作用