ASP.NET Core框架为我们提供了两个明确定义的初始化位置:
1. Startup.ConfigureServices()
方法用于注册DI服务
2. Startup.Configure()
方法用于配置中间件管道
但是,对于我的Web应用程序的其他特定初始化步骤呢?如果它们具有需要注入的依赖项,那么应该放在哪里呢?
例如,我需要基于配置文件appsettings.json中指定的连接字符串初始化数据库ORM。因此,这个初始化代码依赖于IConfiguration
和可能在Startup.ConfigureServices()
期间注册到DI容器中的其他自定义服务。
因此,根据这些文章的建议:
我试图将初始化逻辑封装在单独的类中,然后为IWebHostBuilder
创建扩展方法来执行此代码,但是如何使框架注入IConfiguration
和其他自定义依赖项到这些扩展方法中呢?此外,在所有依赖项注册后,可以确保此代码将在Startup.ConfigureServices()
之后执行吗?是否有更好或推荐的方法来执行这种任务?
SomeExtensionAsync
(或者甚至是整个Main
函数体)时加上一些try/catch
。这可以将异常记录到第三方服务中,例如通知您应用程序启动失败。另外,运行您的应用程序的任何内容都可以将其在stderr
上看到的任何输出发送到另一个服务中,以类似的方式通知您。 - Kirk Larkin