Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 启动时检查条件_Asp.net Core_Integration_Startup - Fatal编程技术网

Asp.net core 启动时检查条件

Asp.net core 启动时检查条件,asp.net-core,integration,startup,Asp.net Core,Integration,Startup,我想在启动ASP.NETCore2.0应用程序时测试某些条件。例如,如果我的数据库服务器或其他服务器运行正常。这对于只有在请求之后才会实例化的东西(比如我的存储库)尤其有用 目前我必须手动执行此请求,但我希望我的应用程序尽早失败。建议在什么时候、在什么地方进行这样的测试?Startup类负责设置服务器,使其成为为应用程序设置一次性初始化内容的最佳选择 在启动中通常有两种主要方法:配置服务和配置。前者运行得很早,负责设置应用程序服务、依赖项和配置。因此,您不能使用它来实际执行实际工作,特别是因为依

我想在启动ASP.NETCore2.0应用程序时测试某些条件。例如,如果我的数据库服务器或其他服务器运行正常。这对于只有在请求之后才会实例化的东西(比如我的存储库)尤其有用


目前我必须手动执行此请求,但我希望我的应用程序尽早失败。建议在什么时候、在什么地方进行这样的测试?

Startup类负责设置服务器,使其成为为应用程序设置一次性初始化内容的最佳选择

启动
中通常有两种主要方法:
配置服务
配置
。前者运行得很早,负责设置应用程序服务、依赖项和配置。因此,您不能使用它来实际执行实际工作,特别是因为依赖项注入容器还没有准备好

但是,
Configure
方法是不同的:虽然它的主要目的是建立应用程序中间件管道,即稍后为请求提供服务的组件,但是您可以在这里充分利用依赖关系,从而可以在这里做更广泛的事情。所以你可以直接在这里打电话

重要的是要理解,
Configure
仍然运行得很早,远远早于您的服务器实际准备好为请求提供服务。因此,如果您的初始化依赖于实际的服务器已经存在,那么您可能应该进一步延迟执行

适当的解决方案可能会使用连接到应用程序生命周期中。这种类型基本上为您提供了一种注册在应用程序生命周期中执行的回调的方法。在您的情况下,您可能会对服务器刚刚完成安装阶段并准备好服务请求时运行的事件感兴趣。因此,基本上是运行一些额外初始化的最佳空闲时间

为了响应生存期事件,您需要在
Configure
方法中注册处理程序:

public void Configure(IApplicationBuilder app, IApplicationLifetime applicationLifetime)
{
    // other…

    // register lifetime event
    applicationLifetime.ApplicationStarted.Register(InitializeApplication);
}

public void InitializeApplication()
{
    // do stuff
}
最后一点注意:显然,目前有一种方法可以防止在IIS上托管时触发生存期事件。在这种情况下,直接在
Configure
中执行代码可能是最好的选择