所以我知道IServiceProvider将在应用程序关闭(干净)时处理,它管理的所有内容都将作为该操作的一部分进行处理。但是如果主线程抛出怎么办? IServiceProvider还会被处理吗?
我问的原因是记录。在其他类型的应用程序中,我通常用try catch包装主进程(在main方法中),然后在finally块中,我确保刷新日志缓冲区。因此,如果主线程抛出,则日志总是被刷新。
我仍然可以这样做,但这意味着试图找到在启动期间创建的容器的引用,并感觉有点kludgy。我觉得让ASP的进程内部包装以确保这种行为是显而易见的,所以它可能会这样做,但我想肯定地知道。
您可以在管道配置期间注册全局异常处理程序中间件,以处理任何其他未处理的异常。在Configure()中,您只需转到app.UseExceptionHandler并传递自定义处理程序(或lambda)。