我有一个运行.ASP.NET WebForms .NET 4.0代码的Windows Server 2008 R2 IIS 7实例。在回发中有一个线程生成器,它运行一个长时间运行的进程。
以下代码在IIS7下无效。它在Cassini本地和我们可用的另一个Windows Server 2003 IIS6实例上工作正常。
var t = Task.Factory.StartNew(() => ProcessWorkItem(wid));
var ex = t.Exception;
Log(string.Format("Spawned background task to wid={5}: id={1} status={4} isfaulted={3} iscompleted={2} ex={0}",
ex == null ? "no exception" : ex.ToString(),
t.Id,
t.IsCompleted,
t.IsFaulted,
t.Status,
wid));
这记录"没有例外"和" isfaulted = false"和" iscompleted = true"不管服务器。
但是,在ProcessWorkItem
内部还有一个日志语句,它在IIS7上永远不会被命中,尽管它在IIS6或Cassini本地开发服务器上都没问题。
知道为什么会这样吗?