首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使AppDomain中的ASP.NET程序集保持活动状态?

如何使AppDomain中的ASP.NET程序集保持活动状态?
EN

Stack Overflow用户
提问于 2009-05-08 05:08:29
回答 3查看 20.7K关注 0票数 50

场景: Web我有一个使用部署项目部署的n层企业ASP.NET应用程序。所有层都会生成供ASP.NET应用程序使用的独立程序集。

问题:运行应用程序时出现。在部署之后,第一次在内存中加载依赖程序集需要花费大量时间。但一旦加载了它的快速照明应用程序。如果没有用户访问应用程序,IIS将从内存中卸载程序集,当用户尝试在以后的实例上访问应用程序时,IIS会再次加载所有程序集,加载时间与第一次加载的时间相同。

我正在寻找一种解决方案,使我能够永久地将程序集加载到内存中,而不是将程序集的易失性特性重写为内存驻留。

或任何其他解决方案,让我的用户愉快地使用解决上述问题的应用程序。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-08 05:23:23

IIS6中,转到应用程序池部分,然后在托管有问题的ASP.NET应用程序的池上右击>属性。转到Performance选项卡,取消选中“在空闲时间后关闭工作进程:”

IIS7中,转到连接窗格并找到应用程序池,然后为托管应用程序的池选择高级设置。找到"Idle Timeout“属性并将其设置为"0”(这将禁用它)。

默认值为20分钟不活动。通过取消选中该框,一旦worker process加载了您的AppDomain,它将永远不会死(当然,除非您终止该进程或其他什么)。默认情况下,当IIS达到某个限制时,它会执行recycle the process,但它也会启动一个新的请求,并对所有传入的请求进行“阶段处理”,直到旧的请求未被使用为止,以便最大限度地减少中断。

我还写了一个小的c#类,它在正常情况下会keep your ASP.NET application alive (alternate archived version)。由于它在应用程序中运行,显然它不能阻止IIS或其他任何东西显式地终止进程,但它将使应用程序保持“热”,例如,应用程序永远不会空闲足够长的时间,以便IIS决定关闭它。

如果您无法直接控制您的IIS配置(例如,共享主机),最好的办法是让一个小型应用程序在单独的系统上运行-例如,一个始终在线的工作站-该系统每x分钟访问您的站点一次,以防止应用程序池超时。没什么特别的--控制台应用程序中一个简单的WebRequest和一个while()循环就可以了。

票数 72
EN

Stack Overflow用户

发布于 2011-07-19 00:38:35

ASP .net的优点之一是可以创建对象的静态(共享)实例。

为了避免外部进程的必要性,您可以(根据示例)在global.asax中创建一个静态计时器,它使用一个简单的WebRequest调用域上的一个页面。通过这种方式,站点将自己保持活动状态,直到完成池的手动重置。

票数 3
EN

Stack Overflow用户

发布于 2010-03-03 12:30:06

我写了一个小的C#控制台应用程序,通过windows任务调度程序让我的4个站点每10分钟保持一次活动。生活再次变得美好起来。我们不会在凌晨2点到5点运行应用程序,这样服务器就可以清理内存,如果这很重要的话。对于我们的网站来说,几乎没有人在这些时间里工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/838318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档