对 IIS 上长时间运行的进程的担忧

Luk*_*e G 5 iis asp.net-mvc iis-7.5 asp.net-mvc-4

关注点:

我已经阅读了描述 IIS 可以随时回收应用程序池的帖子/博客。这是否意味着(就 IIS 回收应用程序池而言)我是否同步或异步调用长时间运行的进程并不重要,因为 IIS 可以回收应用程序池并终止长时间运行的进程?如果是这种情况,确保这种情况不会发生的常见途径是什么?

例子

public Task<ActionResult> LongRunningProcessAsync(SubmitFileModel aModel)

    {
        return Task.Run( () => LongRunningProcess( aModel) );
    }
Run Code Online (Sandbox Code Playgroud)

bar*_*rry 4

HostingEnvironment有一个静态方法RegisterObject,它允许您将对象放置在应用程序的注册对象列表中。

根据菲尔·哈克的说法...

当 ASP.NET 拆除 AppDomain 时,它将首先尝试对所有已注册的对象调用 Stop 方法。...当 ASP.NET 调用此方法时,您的代码需要阻止此方法返回,直到您的工作完成。

或者,您可以创建不由 IIS 托管的服务。