在我的WCF服務中,我使用靜態字典來存放一些資源密集型數據。當應用程序池被回收時,我需要清理資源。有什麼方法(例如事件),我可以檢測到應用程序池正在被回收?如何檢測WCF服務的應用程序池重新啓動?
2
A
回答
0
如果您的應用程序池被回收所有靜態對象將被重置。您可以在創建靜態字典的實例時清除所有外部資源(如文件或...)。是這樣的:
public static partial class ProjectValues
{
public static ConcurrentDictionary<string, string> MessageDictionary { private set; get; }
static ProjectValues()
{
try
{
MessageDictionary = new ConcurrentDictionary<string, string>();
//then clear the resource here
}
catch (Exception ex)
{
return;
}
}
}
0
有沒有什麼方法(例如事件)的,我可以檢測 應用程序池被回收?
有點。
根據Phill Haack,IIS公開了一種名爲HostingEnvironment.RegisterObject的靜態方法,該方法允許您將IRegisteredObject的實現傳遞給它。
從理論上講,這告訴IIS調用IRegisteredObject.Stop操作它決定殺死你的應用程序是在運行W3wp.exe進程之前。
我的理論,因爲這種做法是故障安全和有說在完成清理之前,AppDomain可以不用打電話就可以離開,甚至可以打電話但仍然關閉的實例。
相關問題
- 1. 如何遠程重新啓動的IIS7應用程序池
- 2. 重新啓動服務器後重新啓動WCF服務
- 3. 如何檢測IIS應用程序池啓動
- 4. 檢測到IIS工作進程死鎖並重新啓動應用程序池
- 5. 如何檢測從Linux應用程序關機/重新啓動
- 6. 如何重新啓動Azure應用程序服務實例
- 7. 如何重新啓動應用程序在tomcat服務器
- 8. Android:應用程序重新啓動後服務未啓動
- 9. 如何在新應用程序啓動時啓動服務?
- 10. 重新啓動應用程序而無需重新啓動服務器?
- 11. 檢測並重新啓動崩潰的.NET應用程序
- 12. 重新啓動遠程服務器IIS應用程序池。 RPC服務器不可用
- 13. 如何檢測從C#啓動的新應用程序?
- 14. 在服務器啓動/重新啓動時啓動Node.js應用程序
- 15. 如果Windows索引服務不索引Web.Config,Windows索引服務可以重新啓動應用程序池嗎?
- 16. 測試WCF服務應用程序
- 17. 如何檢測從Linux驅動程序重新啓動/關機
- 18. 如何自動重新啓動我的應用程序或服務?
- 19. 如何從.NET重新啓動遠程服務器上的COM +應用程序?
- 20. 針對IIS應用程序池的System.Web.Caching&System.Runtime.Caching重新啓動
- 21. 使用asp.net(IIS7)重新啓動應用程序池
- 22. 使用PowerShell重新啓動應用程序池異常
- 23. 如何檢測應用程序委託 - OSX中的重新啓動事件?
- 24. Android:使用START_REDELIVER_INTENT標記檢測重新啓動的服務
- 25. 如何檢測Android應用程序啓動器/啓動器
- 26. IIS應用程序池標識不允許服務器啓動
- 27. 如何檢測用戶是否通過單擊應用程序圖標主動重新啓動應用程序?
- 28. 安卓服務在應用程序死機後重新啓動
- 29. 從wpf應用程序重新啓動MSDTC服務
- 30. Android服務在應用程序死亡時重新啓動