首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.net IIS请求没有在executionTimeout值之后超时

ASP.net IIS请求没有在executionTimeout值之后超时
EN

Server Fault用户
提问于 2021-06-30 17:29:03
回答 1查看 455关注 0票数 1

我们已经为托管在服务器2019年IIS 10上的executionTimeout 4.8应用程序设置了system.web/httpRuntime .net =60。我们不时会看到各种请求大大超过这个超时,有时请求会显示为运行数小时。在哪些情况下,这种超时将不会得到遵守?

EN

回答 1

Server Fault用户

发布于 2023-04-11 17:49:00

我也遇到了同样的问题,很难找到答案,简单来说,答案是"executionTimeout处理不是在最新版本的executionTimeout ASP.NET MVC中实现的“(对于任何使用异步请求处理的非MVC ASP.NET应用程序来说也是如此)。您必须在应用程序中创建自己的请求超时逻辑。如果使用进程内会话状态,IIS托管的ASP.NET核心应用程序也是如此;进程外会话状态尊重ASP.NET核心应用程序中的executionTimeout设置(但在ASP.NET核心应用程序中关闭进程内会话状态并不能解决这个问题--我试过了)。

加长解释

内部ASP.NET操作变成异步后,IIS执行超时就停止在(预核心)中工作。当HTTP操作是同步的时,运行时只是观察一个请求的线程存活了多长时间,如果花费的时间太长,就会终止它,这是因为一个线程总是绑定在一个请求上。但是,一旦框架发展到HTTP操作变得异步,超时模型就不再工作,因为一个线程最终会处理多个请求,因此您不能在这样或那样的时间之后安全地杀死一个线程。

因此,如果您真的希望入站请求在预核心ASP.NET上超时,则必须在应用程序中实现自己的请求超时逻辑。另一方面,ASP.NET核心似乎实际上仍然适用于httpRuntime executionTimeout设置(尽管我还没有亲自测试它),但即使这样,它也只能在进程外会话状态上下文中工作;ignore应用程序的进程内会话状态上下文将忽略超时。

红鲱鱼

网络上的许多答案都是“在system.web compile debug中关闭web.config模式”。虽然ASP.NET的调试模式确实是有意地阻止超时被观察到,并且在将标记转换为用于解决问题的false时,它将不再存在。

2011年的一些答案也声称这个问题将在MVC 4中得到解决,但从来没有解决过。

预核ASP.NET

https://social.msdn.microsoft.com/Forums/en-US/4c50c754-d667-4fef-9975-6fe6a8da62e3/webconfig-executiontimeout-not-working-in-aspnet-mvc?forum=aspmvc

https://social.msdn.microsoft.com/Forums/en-US/e1141be5-ef9b-4131-8766-315e495e1b4e

ASP.NET核

https://github.com/dotnet/aspnetcore/issues/23160

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1068281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档