在ASP.Net应用程序中,用户单击网页上的一个按钮,然后通过事件处理程序在服务器上实例化一个对象,并对该对象调用一个方法.
我不知道的是,即使用户会话过期,IIS是否允许我的线程继续运行. 想象一下,用户激发事件,我们在服务器上实例化对象,并在新线程中激发方法.用户对"您的请求已提交"消息感到满意,并关闭浏览器.最终,此用户会话将在IIS上超时,但线程可能仍在运行,正在进行工作.IIS会允许线程继续运行,还是会在用户会话到期后终止该线程并释放该对象?
编辑:从答案和 comments 中,我了解到最好的方法是将长期运行的处理移到IIS之外.除此之外,这还涉及appdomain回收问题.在实践中,我需要在有限的时间内启动版本1,并且必须在现有框架内工作,因此我希望避免使用服务层,因此希望在IIS中启动线程.实际上,这里的"长时间运行"只需要几分钟,网站上的并发性很低,所以应该没问题.但是,下一个版本肯定需要拆分为单独的服务层.