担忧:
我读过描述 IIS 可以随时回收应用程序池的帖子/博客。这是否意味着(就 IIS 回收应用程序池而言)我是否以同步或异步方式调用长时间运行的进程并不重要,因为 IIS 可以回收应用程序池并终止长时间运行的进程?如果是这种情况,确保这种情况不会发生的常见途径是什么?
Example
public Task<ActionResult> LongRunningProcessAsync(SubmitFileModel aModel)
{
return Task.Run( () => LongRunningProcess( aModel) );
}
托管环境 http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.aspx有一个静态方法,注册对象 http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.registerobject.aspx,它允许您将对象放置在应用程序的已注册对象列表中。
根据菲尔·哈克的说法... http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx
当 ASP.NET 拆除 AppDomain 时,它会首先尝试调用
所有已注册对象上的 Stop 方法...当 ASP.NET 调用此方法时,您的代码需要阻止此方法返回,直到您的工作完成。
或者,您可以创建不由 IIS 托管的服务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)