ASP.Net httpruntime executionTimeout不工作(和是debug = false)
我们刚刚注意到executionTimeout已停止在我们的网站上运行。去年它肯定在工作......很难说什么时候停止了。
我们目前正在运行:
Windows的2008x64
IIS7
32位二进制文件
管理管道模式=经典
框架版本= v2.0
Web.Config有
<compilation defaultLanguage="vb" debug="false" batch="true">
<httpRuntime executionTimeout="90" />
我们为什么一直看到Timetaken到20分钟的任何暗示。 DebugType(完全vs pdbonly)的编译选项会有任何影响吗?
datetime timetaken httpmethod Status Sent Received<BR>
12/19/10 0:10 901338 POST 302 456 24273<BR>
12/19/10 0:18 1817446 POST 302 0 114236<BR>
12/19/10 0:16 246923 POST 400 0 28512<BR>
12/19/10 0:12 220450 POST 302 0 65227<BR>
12/19/10 0:22 400150 GET 200 180835 416<BR>
12/19/10 0:20 335455 POST 400 0 36135<BR>
12/19/10 0:57 213210 POST 302 0 51558<BR>
12/19/10 0:48 352742 POST 302 438 25802<BR>
12/19/10 0:37 958660 POST 400 0 24558<BR>
12/19/10 0:06 202025 POST 302 0 58349<BR>
没有找到相关结果
已邀请:
3 个回复
宠封钞轰
垫歌蝎降凤
事件处理程序开始的时间。然后,当请求超时(在我们的情况下为1小时后),它将记录在数据库中并记录时间戳。 所以这就是理论:ASP.NET只计算线程实际执行的时间,而不是它睡着的时间。 所以在
之后,线程进入睡眠状态,直到IIS收到整个POST主体。然后线程被唤醒工作并且
时钟开始运行。因此,在网络传输阶段花费的时间不计入
。最终,站点范围的连接超时被命中,IIS关闭连接,导致ASP.NET中出现异常。 所有在POST主体转移到Web服务器之前都会调用
甚至
。然后在调用请求处理程序之前有一个很长的间隙。所以它可能看起来像.NET有30分钟的请求,但线程没有运行那么久。 我将开始记录请求处理程序实际开始运行的时间,并查看它是否超过了我设置的限制。 现在,为了控制请求在每个URL的基础上保持传输阶段的持续时间,我不知道。在全局级别,我们可以在webLimits中为应用程序设置minBytesPerSecond。我找不到它的用户界面。这应该会在传输阶段激起超慢客户端。 这仍然不能解决实际发送数据的DoS攻击的问题。
剃摧庭峨僳
我的助手班:
在这种方法中,我们实际上不会异步地做任何事情。
只是一个假的asyn任务。我的所有业务逻辑仍在主线程上执行,不会改变当前代码的任何行为。