为什么我的Application_Start()任务被停止/取消/终止?

时间:2013-06-10 08:24:57

标签: asp.net asp.net-mvc-4 task-parallel-library task background-process

我在ASP.NET MVC 4 Web应用程序中有以下代码:

的Global.asax.cs

protected void Application_Start()
{
    Task.Factory.StartNew(
        () =>
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                Thread.Sleep(100);
                Trace.WriteLine("Working");
            }
        },
        cancellationToken,
        TaskCreationOptions.LongRunningTask,
        TaskScheduler.Current);
}

似乎任务在应用程序初始化时开始运行,运行一段时间,然后停止。只要AppDomain运行,我想继续运行。导致它停止的原因是什么,我可以做些什么来阻止它停止?

2 个答案:

答案 0 :(得分:0)

从您获得的代码中,您的cancellationToken似乎为null,并且您的代码行中有NullRefernceException:

 while (!cancellationToken.IsCancellationRequested)

你能在日志中看到这样的例外吗?

答案 1 :(得分:0)

事实证明,潜在的问题是Glimpse TraceInspector,this issue的副作用。

因为这会导致抛出异常,所以任务正在停止。

我仍然无法完全解释细节,但是将其添加到我的Web.config解决了问题:

  <glimpse>
    <inspectors>
      <ignoredTypes>
        <add type="Glimpse.Core.Inspector.TraceInspector, Glimpse.Core"/>
      </ignoredTypes>
    </inspectors>
  </glimpse>