加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

使用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应用程序,并使用命名管道传递数据/消息(仅当需要机器内调用时).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读