asp.net core 2.0中System.Web.Hosting.HostingEnvironment.RegisterObject的替代方案
问题描述:
我有一个使用HostingEnivronment.RegisterObject的遗留应用程序。asp.net core 2.0中System.Web.Hosting.HostingEnvironment.RegisterObject的替代方案
我一直负责将此转换为asp.net核心2.0。但是我无法找到一种方法来实现这个或在asp.net核心2.0中找到替代方法。
命名空间Microsoft.AspNetCore.Hosting.Internal不包含registerobject方法,也没有IRegisteredObject接口。我对如何实现这一目标感到迷茫。
答
在asp.net核心中实现类似目标的方法是使用IApplicationLifetime接口。它有两个特性的两个CancellationToken
S,
ApplicationStopping
:
主机正在执行正常关机。请求可能仍然是 处理。关机阻塞,直到此事件结束。
而且ApplicationStopped
:
主机已完成正常关机。所有的请求应该是 完全处理。关机阻塞,直到此事件结束。
此接口默认在容器中注册,因此您可以将其注入到任何需要的位置。您先前称为RegisterObject
,你改为调用
// or ApplicationStopped
var token = lifeTime.ApplicationStopping.Register(OnApplicationStopping);
private void OnApplicationStopping() {
// will be executed on host shutting down
}
而且你OnApplicationStopping
回调函数将在运行时主机关机时调用。在那里你以前会叫UnregisterObject
,你只是从处置令牌CancellationToken.Register
返回:
token.Dispose();
您也可以通过这些取消标记到希望取消标记,并且不应该被关闭意外中断操作。
好的让我检查一下 –