首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异常:线程在不处理Response.End问题时被中止

异常:线程在不处理Response.End问题时被中止
EN

Stack Overflow用户
提问于 2017-01-28 01:37:14
回答 1查看 1.1K关注 0票数 0

我有一个web应用程序,它有一个页面,我每30分钟调用一个页面来激活一个工人。大约每周5-7次,我都会收到一个Thread was being aborted异常

aspx看起来有点像这样:

代码语言:javascript
复制
<%@ Page Language="C#" AutoEventWireup="true" %>
<html>
<head runat="server">
    <script runat="server"> 
    public void Page_Load(object sender, EventArgs e)
    {
        System.Threading.Tasks.Task.Factory         
            .StartNew(() => { new MyApplicationWorker().RunApplicationWorker(); });
    }   
    </script>
</head>
<body></body>
</html>

在Web.config中,我有这一行来防止超时,我知道worker在比这更短的时间内完成。

代码语言:javascript
复制
<httpRuntime enableVersionHeader="false" executionTimeout="300" />

如您所见,页面加载并调用一个在后台运行的worker。这里没有Response.End问题或Server.Transfer,这是大多数其他处理这个问题的帖子都围绕的问题。我能做些什么来防止异常的发生?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-02 00:11:02

这是我一年多来一直在寻找的一个bug,所有其他相关问题似乎都与Response.End()问题有关,但这里并非如此。

我一直认为发生bug的方法有问题,但实际上是在调用worker的时候bug才开始的。

解决方案很简单:我添加了.Wait(),从那时起,这个bug就从日志中消失了。

代码语言:javascript
复制
System.Threading.Tasks.Task.Factory         
      .StartNew(() => { 
          new MyApplicationWorker().RunApplicationWorker().Wait(); 
      });

感谢alex.b对这篇other question的评论,我希望这能帮助那些遇到同样问题的人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41899848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档