最近,我注意到我的网站被爬虫攻击,打开页面需要很长时间。我以前从未想过,但现在意识到我的 MVC3 应用程序永远不会超时。例如,如果我在Thread.Sleep(1000 * 60 * 10)
控制器操作中输入(十分钟)并打开页面,10 分钟后我将获得渲染视图。
我已经阅读了大量文章和 SO 问题,但没有运气。我在 localhost 和构建了“Release”的生产服务器上尝试了以下解决方案,但这些解决方案都没有达到我想要的效果。
解决方案1:
在 web.config 中:
<location path="ControllerName/ActionName">
<system.web>
<httpRuntime executionTimeout="1" />
</system.web>
</location>
解决方案2:
在控制器动作中
HttpContext.Server.ScriptTimeout = 1;
我剩下的唯一想法是计算自请求进入以来经过的时间并将其与当前时间进行比较,如果它大于我的超时限制,则手动抛出和 TimeoutException()。我计划将它放在“OnActionExecution”和“OnActionExecuted”中,但如果请求卡在它们之间的某个地方,我将永远无法判断我是否应该超时。
有没有很好的解决方案来实现这一点?有没有人得到请求超时在 MVC3 中工作?