如何检测当前应用程序池是否在IIS7.5和Asp.Net 3.5中清理
好的 – 正如问题主题所述 – 关于你如何做这个的任何想法?
我一直在看System.Web.Hosting中的对象,但没有什么是突出的. 原因?我正在收到一个或两个应用程序错误,这些错误通常在回收期间发生(它们发生在大约25个小时,我已经将我的应用程序池的回收时间设置为默认值),所以我想知道他们是否在线程正在关闭的池中,或正在开始(ed / ing)的池中. 解决方法
我最近偶然发现了
this article on Brain.Save(),从主持WCF(他是史蒂夫·缅因州 – 连接的服务部门的雷德蒙德的项目经理)的角度来说,正是这个问题.
当WCF服务托管在Asp.Net中时,他们需要能够执行此操作,因为它们需要能够关闭所有打开的监听器,以便新的应用程序域中的WCF引擎将能够再次打开它们. 正如文章所示,答案是实现IRegisteredObject interface,调用ApplicationManager.CreateObject来创建一个对象的实例,然后将其注册到HostingEnvironment.RegisterObject(在MSDN文档中详细介绍了该接口). 当该对象的IRegisteredObject.Stop(bool)实现被调用为false作为参数时,这是通知应用程序域被关闭,并且该对象应该被注销(类似于全局处理),并调用HostingEnvironment. UnregisterObject. 当它被称为真实的时候,这意味着你没有及时取消注册,如果你不立即注销,那将是为你完成的. 我可以使用这个机制找出当发生异常时,如果AppDomain被杀死了.抛出异常的对象的性质意味着如果它不在关闭状态,则必须在初始启动期间. 然而,同样地,我可能会开始关注这种持久性机制,以便我的一些其他更复杂的静态信息! 历史 本文还解释了为什么要在global.asax中使用IRegisteredObject而不是Application_Start和Application_End方法的一些历史和理由:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 让System.Web.Optimization在类库中的剃刀视
- 【ASP.NET Core】AddMvc和AddMvcCore的区别
- asp.net-mvc – asp.net mvc – 视图中的命名空间
- Asp.Net会话在ashx文件中为null
- ASP.NET MVC与ASP.NET 4.0
- asp.net-mvc – 使用ASP.NET MVC测试驱动的开发 – 从哪里开
- asp.net – DropDownList的SelectedIndexChanged()如何在没
- 通过WCF扩展实现消息压缩
- asp.net – “’Microsoft.Jet.OLEDB.4.0’提供程序未在本地
- asp.net-mvc-3 – _AppStart正在执行时无法创建存储范围
- asp.net – 实体框架不会显示存储过程
- asp.net-mvc-3 – ASP.NET MVC 3:模型级客户端或
- asp.net mvc 之旅—— 第四站 学会用Reflector调
- asp.net – Form .NET中的输入元素名称
- asp.net-mvc-3 – 模型绑定器和隐藏字段
- asp.net-mvc – .NET-MVC – 通过SSL重写URL的某
- asp.net – 在SessionPageStatePersister中保持V
- Asp.net成员资格表:aspnet_UsersInRoles未出现在
- asp.net – URL长度的最佳限制是什么? 100,200
- 使用ASP.NET重新发明我的身份验证策略