如何在ASP.NET中为不同的URL设置不同的超时
|
我想要在我的应用程序中的一些URL的不同的连接限制.一些URL接受文件上传,并需要大量连接超时.所有其他URL都需要更小的超时时间,以防止拒绝服务,而不会浪费资源. 目前,我将IIS中的Connection Timeout属性设置为整个站点到60分钟.然后我在web.config中这样做: <system.web>
<httpRuntime executionTimeout="480" maxRequestLength="1024" />
</system.web>
<location path="FileUpload/WriteFile.rails">
<system.web>
<httpRuntime executionTimeout="3600" maxRequestLength="512000" />
</system.web>
</location>
所以我希望这将把所有URL设置为8分钟超时,并允许WriteFile.rails URL运行60分钟.相反,所有URL都可以运行60分钟.如何让IIS做我想做的事情? 解决方法这个问题具体关于超时问题,但也暗示设置maxRequestLength.我将尝试对这两个问题提供一个真正全面的答案(现在我花了大部分时间来处理这些问题).假设我们的网站上有一个我们要处理文件上传的URL.我们希望在该网址上吸收最多千兆字节的数据,我们将允许客户端连接至多1小时.我们想要的所有其他URL只允许90秒的连接时间,最多4MB的POST主体. 全局设置 首先,您必须全球提高整个网站的时间和大小的限制.首先,您要为整个站点设置“连接超时”.这充当绝对的上限,不能在web.config内设置. IIS7网站有good instructions here.您还可以使用IIS7 / 7.5附带的Microsoft.Web.Administration library进行编程: var serverManager = ServerManager.OpenRemote("web-server-name");
var site = serverManager.Sites["Your-Site-Name"];
site.Limits.ConnectionTimeout = new TimeSpan(1,0);
接下来,您需要设置该站点允许的最大大小请求.在“请求调整”模块中,这完全不同.默认情况下,此模块可能未安装在IIS7上.同样,Microsoft还有good instructions,通过GUI设置maxAllowedContentLength.这可以从Web.config中设置: <system.webServer>
<security>
<requestFiltering>
<!-- Allow 1GB uploads -->
<requestLimits maxAllowedContentLength="1073741824"></requestLimits>
</requestFiltering>
</security>
</system.webServer>
此设置根据Content-Length标头进行评估,并且大于此的请求将立即导致404.13.该设置是以字节为单位,接下来是以千字节为单位,这个IIS7非常一致. ASP.NET设置 接下来,我们希望以90秒/ 4MB的速度覆盖所有ASP.NET请求.这可以在web.config中完成: <location>
<system.web>
<httpRuntime executionTimeout="90" maxRequestLength="4096" />
</system.web>
</location>
要使设置全局,system.web标签被包装在没有路径属性的位置标签中. (在原始问题中,我没有将system.web标签包装在位置标签中,这可能是我的问题的根源.)maxRequestLength这次是以千字节为单位. 最后,我们希望允许我们的特殊上传网址接受巨大的上传.将这些值设置为高于全局设置的值将不起作用.全局值覆盖这些设置. <location path="Uploads/PostFile.rails">
<system.web>
<httpRuntime executionTimeout="3600" maxRequestLength="1048576" />
</system.web>
</location>
如果一切都是正确的,那就应该这样做.正如Peter Bromberg所建议的,您可以根据需要增加这些块,以提高特定URL的限制. 最后一个注意事项:在调试模式下,IIS不强制执行Connection Timeout或executionTimeout设置,以允许您更多的时间进行调试.因此,要在开发人员机器上测试您的设置,您应该执行发布版本,您应该将“启用服务器端调试”设置设置为false. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何为mvc应用程序中的所有控制器启用ssl
- asp.net-mvc – 将部分视图渲染为字符串MVC4
- asp.net-mvc-3 – ASP.NET MVC3 Razor – 在将视图放置在备
- asp.net-mvc – 在ASP.NEt MVC 3中传递Html.BeginForm()中D
- ASP.Net MVC MvcBuildViews大大增加了编译时间
- 如何在本地运行ASP.NET C#Web应用程序?
- 如果DataSource不包含任何项目,如何在ASP.NET C#中隐藏转发
- 如何在ASP.Net webform中使用标签?
- asp.net – 防止在文本框中键入非ascii字符
- asp.net-mvc – 用于支持多种语言的ASP MVC技术
- asp.net-mvc – MVC动作过滤器集合已修改;枚举操
- 在ASP.NET中禁用JavaScript时检测
- asp.net – IControllerFactory’MyWebSite.WebU
- asp.net – 如何从HttpClient.PostAsJsonAsync()
- ASP.NET控件的命名指南是什么?
- asp.net – 如何指定javascript运行时显示ModalP
- asp.net-mvc-4 – 如何在mvc4 ActionLink中加密查
- .net – SqlConnection的Dispose方法是否会干扰连
- asp.net-mvc-5 – 使用属性路由的路由优先级
- asp.net-mvc – 如果Hangfire已经运行,请停止启动
