在我的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服务在应用程序死亡时重新启动