重新启用导致IIS挂起的ASP.NET会话

时间:2010-12-30 16:16:04

标签: asp.net session iis-7 hang

我正在尝试在客户端的Web服务器上实现一些故障保险程序,该服务器运行着两个最重要的站点(IIS7上的ASP.NET)。我将设置应用程序池限制,以便如果任何w3wp进程使用90%+ CPU超过一分钟,那么它将被杀死(向任何访问者生成临时503服务不可用消息),并根据我的本地测试将在一分钟内重新启动 - 比一个占用CPU的过程在整个服务器上停留任何时间长度都要好得多。

这似乎有效,但是在我摆弄我的本地IIS7实例时,我注意到如果请求调用我的“Kill.aspx”,即使网站重新启动,IIS也不会为导致它的会话服务挂。我只能从不同的会话重启测试站点 - 但是只要我在“杀手”浏览器上清除我的cookie,我就可以再次访问该站点。

因此,无论IIS试图遏制这种恶意行为,都不会对一个甚至有点坚定的对手产生影响。在大多数情况下,如果排泄物确实击中了粉丝,则会出现编码/配置错误,而不是当时正好请求页面的用户的错误。

因此,我想关闭此功能,因为理论用户不知道他们需要在他们再次访问网站之前清除他们的cookie。我真的很感激有关如何做到这一点的任何想法。

2 个答案:

答案 0 :(得分:1)

Yous应该使用ASP.Net Session StateServer而不是In-Proc(有关详细信息,请参阅msdn)。这样,您的会话将在不同的进程中运行,并且不会受到IIS崩溃的影响。

答案 1 :(得分:0)

关闭什么“功能”?如果重置了工作进程(以及您使用进程内会话),那么会话将在重置时被吹走。

您可能希望调查将会话存储移动到状态服务器或其他一些进程外情况。

此外,您可能希望将应用程序池设置为使用多个工作进程(也就是:Web园),如果一个进程被终止,其他进程继续提供内容。

接下来,作为另一个选项,您可能需要设置多个Web服务器并对其进行负载平衡。

最后,您可能希望对应用进行概要分析,以确切了解它们如何导致它变为虚无。我的猜测是,有很多代码问题只是掩盖了这个想法。