【发布时间】:2012-12-14 19:36:25
【问题描述】:
最近,我注意到我的网站被爬虫攻击,这需要很长时间才能打开页面。我以前从未想过,但现在意识到我的 MVC3 应用程序永远不会超时。例如,如果我在控制器操作中输入Thread.Sleep(1000 * 60 * 10)(十分钟)并打开页面,10 分钟后我将获得渲染视图。
我已经阅读了大量文章和 SO 问题,但没有运气。我在 localhost 和构建了“Release”的生产服务器上尝试了以下解决方案,但这些解决方案都没有达到我想要的效果。
解决方案一:
在 web.config 中:
<location path="ControllerName/ActionName">
<system.web>
<httpRuntime executionTimeout="1" />
</system.web>
</location>
解决方案 2:
在控制器动作中
HttpContext.Server.ScriptTimeout = 1;
我剩下的唯一想法是计算自请求进入以来经过的时间并将其与当前时间进行比较,如果它大于我的超时限制,则手动抛出和 TimeoutException()。我计划将它放在“OnActionExecution”和“OnActionExecuted”中,但如果请求卡在它们之间的某个地方,我将永远无法判断我是否应该超时。
有没有很好的解决方案来实现这一点?有人在 MVC3 中工作时遇到过请求超时吗?
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
为什么你的行动需要这么长时间才能开始?也许这是需要改进的地方?
-
操作正常。但看起来这个爬虫是故意放慢自己的速度。
标签: c# asp.net asp.net-mvc-3