我有一個使用SQL持久性的Windows Workflow實例,它承載於Web運行時,因爲工作流由ASP.NET表單提交啓動。它大部分時間運行良好,但我注意到我必須踢東西的情況:Windows工作流程:爲什麼他們被困在持久性中?
我注意到nextTimer已經過時了,甚至幾個小時。有時,持久性數據庫中的ownerID和ownedUntil字段爲空,有時不是。 「解鎖」和「封鎖」字段始終都是「1」。
...然後工作流運行時不會選擇它備份,直到我填充「所有者」字段,如果它們被填充並通過循環啓動應用程序池,並且事情繼續進行之後大部分。沒有任何錯誤(我已經嘗試了/抓住所有的東西,並且寫出任何捕獲到跟蹤文件中的東西),所以不是這樣。
導致持久性的延遲活動都設置爲一分鐘,運行時的擁有持續時間也爲60秒。它被卡住的代碼應該總是不到一分鐘。
正如我寫這篇文章,我很好奇,如果應用程序池/應用程序域的再循環造成它......當工作流嘗試調用運行時的任何方法時,它正忙於旋轉應用程序域/池,可能會在60秒的擁有時間內泄漏。這聽起來很合理,會導致它不能正常補充水分?
除了側軌,有什麼會導致這種行爲,我看到了?我不想每天通過阻止卡住的工作流來保持運行時間。
優秀的寫作,我會盡可能多地嘗試,並報告回來。 – Chris 2009-07-29 21:21:50
標記爲已接受,因爲它覆蓋了很多地面,感謝您的信息!它最終成爲擁有時間。我調高了instanceOwnershipDuration,以便爲每個加載的活動嘗試執行的任何操作都完全執行,並且從那以後它一直沒有出現問題。 – Chris 2009-08-07 15:26:42