使用ASP.NET和IIS进行多线程处理
发布时间:2020-12-16 06:52:34 所属栏目:asp.Net 来源:网络整理
导读:我们有一个Web应用程序,需要处理大量数据并将消息推送到一系列MSMQueue.此操作可能需要超过10分钟,但我们希望快速回复(由ID组成).因此,我们已经实现了一个系统,该系统生成ID并在单独的线程上启动推送过程,然后返回ID. 这工作正常,但我们唯一关心的是重新启动
我们有一个Web应用程序,需要处理大量数据并将消息推送到一系列MSMQueue.此操作可能需要超过10分钟,但我们希望快速回复(由ID组成).因此,我们已经实现了一个系统,该系统生成ID并在单独的线程上启动推送过程,然后返回ID.
这工作正常,但我们唯一关心的是重新启动IIS.我们做了一些测试,即使我们的线程没有完成排队消息,IISRESET也会杀死工作线程.理想情况下,我们希望以我们的线程将继续运行直到它完成的方式重新启动IIS. 将/ NOFORCE开关传递给IISRESET似乎没有任何效果. 有没有人知道我们可以确保IISRESET在重新启动IIS之前等待我们的工作线程完成其处理的方式. 谢谢, 史蒂夫 解决方法
IIS并不是你应该执行长期运行任务的地方.我们有非常相似的要求,我们需要在Web服务器上启动长时间运行的维护任务.这些作业通过Web服务启动,然后传递给
Windows服务.只要
Windows服务仍然存在,我们就可以查询任务的进度.这意味着我们长时间运行的任务可以在IISRESET中存活.
IISRESET几乎全有或全无,并且对您在ASP.NET应用程序中运行的.NET线程不敏感. / NOFORCE开关用于告知IISRESET如果服务在一分钟内没有响应,则不要强制重置IIS. IISRESET不了解您的.NET应用程序,并会使您的应用程序死机. 更新: 要回答Steve的评论中的问题:“您如何建议从IIS将数据传递到Windows服务?”.该怎么做是在Windows服务中托管.NET Remoting或WCF应用程序,并使用命名管道传递数据/消息(仅当需要机器内调用时). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
热点阅读