【发布时间】:2009-07-29 17:35:50
【问题描述】:
我有一个使用 SQL 持久性的 Windows Workflow 实例,托管在 Web 运行时中,因为工作流是由 ASP.NET 表单提交启动的。它大部分时间都运行良好,但我注意到我必须踢东西的情况:
我注意到 nextTimer 已经过期了,即使是几个小时。有时 ownerID 和ownedUntil 字段在持久性数据库中为空,有时不是。 “unlocked”和“blocked”字段始终都是“1”。
...然后工作流运行时不会将其恢复,直到我将“所有者”字段清空(如果它们已填充并通过循环启动应用程序池),此后一切顺利大部分。没有错误(我在所有内容周围都有 try/catch 块,并将捕获的任何内容写到跟踪文件中),所以不是这样。
导致持久性的延迟活动都设置为一分钟,运行时的所有权持续时间也是 60 秒。它卡住的代码应该总是不到一分钟。
在我写这篇文章时,我很好奇应用程序池/应用程序域的回收是否会导致它......当工作流尝试调用运行时中的任何方法时,它正忙于启动应用程序域/应用程序池并且可能在 60 秒的所有权期限内泄漏。这听起来似乎很合理,这会导致它无法正常补水吗?
除了偏离轨道之外,我看到的这种行为可能是什么原因造成的?我不想通过解除卡住的工作流程来每天照看运行时。
【问题讨论】: