ASP.NET Core如何设置请求超时时间

如果一个请求在ASP.NET Core中运行太久,会导致请求超时,目前ASP.NET Core对请求超时的设置比较麻烦,本文列出目前收集到的一些方法,供大家参考。

 

 

部署ASP.NET Core到IIS的设置方法


 

如果你的ASP.NET Core项目是部署在IIS上的,那么可以在ASP.NET Core项目发布后生成的web.config文件中,进行如下设置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore requestTimeout="00:20:00"  processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>

通过添加aspNetCore节点和设置requestTimeout属性,可以将请求的超时时间设置为你想要的值,上面就设置为了20分钟。

虽然不知道requestTimeout的最大值可以设置到多少,但是试了下设置到100小时30分钟是没有问题的

requestTimeout="100:30:00"

如果一个Http请求100小时都还没执行完那也是可以了。。。但是也不要把requestTimeout设置得非常大(例如1000小时),那样IIS会报错。

 

 

在Visual Studio中使用IIS Express调试时的设置方法


 

一般在使用Visual Studio调试ASP.NET Core时,我们都会选择IIS Express作为Web服务器,下面就介绍下如何在IIS Express中设置web.config文件的超时时间。

在Windows任务栏上选中IIS Express:

右击IIS Express图标,选择Show all applications:

在弹出的窗口列表中,选中你要更改超时时间的application,然后点击底部的Config链接,这样会打开站点的applicationhost.config文件。

然后在aspNetCore节点上应用requestTimeout属性即可:

requestTimeout="00:20:00"

例如:

<system.webServer>
   <handlers>
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
   </handlers>
   <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" forwardWindowsAuthToken="false" requestTimeout="00:20:00" stdoutLogEnabled="false" />
   <httpCompression>
     <dynamicCompression>
       <add mimeType="text/event-stream" enabled="false" />
     </dynamicCompression>
   </httpCompression>
</system.webServer>

最后保存applicationhost.config文件即可。

 

 

在代码层面设置超时时间


 

我们还可以在ASP.NET Core的代码层面,通过在项目Program.cs文件中添加.UseKestrel(...)BuildWebHost方法中,来设置KeepAliveTimeout属性的值,从而设置请求的超时时间,可以结合上面介绍的web.config中的requestTimeout属性来一起做设置。

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .UseKestrel(option =>
    {
        option.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(20);
        option.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(20);
    })
    .Build();

 

转载于:https://www.cnblogs.com/OpenCoder/p/10307882.html

.net core中间件Polly asp.net core中间件Polly 阅读详情

相关推荐

.NET CORE微服务之Polly

Polly是一个.NET Core微服务框架,用于实现容错、重试、熔断等策略。它可以帮助开发者在分布式系统中提高可靠性和稳定性。Polly提供了丰富的策略,如重试策略、熔断策略、超时策略等,可以灵活地应用于微服务架构中。通过使用Polly,开发者可以更好地处理异常情况,提高系统的可用性和性能。

m0_59178355的博客 2405

ASP.NET页面请求超时时间设置多种方法

ASP.NET 页面请求超时时间(页面后台程序执行时间)默认值为110秒(在 .NET Framework 1.0 版和 1.1 版中,默认值为 90 秒) 即: Server.ScriptTimeout = 110(HttpServerUtility.ScriptTimeout = 110) System.Web.Configuration.HttpRuntimeSection().ExecutionTimeout.ToString() =00:01:50(110 秒) 方法一:设置 Server.ScriptTimeout 的值 注意:设置的值必须大于90,否则不会生效,请求超时值依然是9

ASP.NET Core 请求超时问题与解决方案

处理 ASP.NET Core 中的请求超时问题需要综合考虑应用的性能优化、外部环境的影响以及请求的分段处理等多个方面。希望本文提供的实例和分析能帮助你在开发过程中避免或解决类似的超时问题。

m0_74337424的博客 292

.NET CORE数据库操作超时时间全局配置

.NET CORE数据库操作超时时间全局配置

ZZHSourceCode的博客 2194

【小5聊】Asp.Net Core 2.1基础之部署在IIS上接口请求超时解决方法

由于项目业务需求,对于调用和请求接口A可能需要比较长的时候,比如10分钟,那么对于core默认2分钟的请求时间就不够用了 1、Core默认请求时间 默认请求时间是2分钟 2、Core在发布后自动生成web.config配置文件 web.config基础信息如下 <?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplication..

小5聊的博客 3223

IIS Session设置超时时间

Iis

zhoudong850的博客 7576

ASP.NET CORE ... because it was not sent by the client at a minimum of 240 bytes/second.

问题:使用httpClient进行asp.net core 的api请求时出现the request timed out because it was not sent by the client at a minimum of 240 bytes/second.错误提示 解决: public static IWebHostBuilder CreateWebHostBuilder(string[...

拥有必珍惜 446

Asp.net core 中如何设置请求超时的时长

在网页程序运行需要较长时间运行的是时候,ASP.NET Core MVC会出现502 bad gateway请求超时情况。一般默认的超时时间都比较短,我们需要在 web.config 中配置一下。其中requestTimeout 属性就是用来设置超时时长的。解决方案来自云端网客。 <?xml version="1.0" encoding="utf-8"?> <...

alex14477的博客 2057

ASP.NET Core 中的请求超时中间件

应用可以选择性地对请求应用超时限制。默认情况下,ASP.NET Core 服务器不会执行此操作,因为请求处理时间因方案不同存在很大差异。例如,WebSocket、静态文件和调用昂贵的 API 需要不同的超时限制。因此,ASP.NET Core 提供了中间件,可用于配置每个终结点的超时以及全局超时。达到超时限制时,中的会将设置为true。不会在请求中自动调用,因此应用程序仍可能生成成功或失败响应。如果应用不处理异常并生成响应,则默认行为将是返回状态代码 504。本文介绍如何配置超时中间件。

Code365 889

ASP .NET CORE请求超时中间件

ASP .NET CORE超时中间件介绍

qq_40950398的博客 1046

ASP.NET Core MVC 502 bad gateway 超时如何处理

在网页程序运行需要较长时间运行的时候,ASP.NET Core MVC会出现502 bad gateway请求超时情况。一般默认的超时时间都比较短,我们需要在 web.config 中配置一下。其中requestTimeout 属性就是用来设置超时时长的。 服务器环境: Net Core 2.1.15 参考这篇文章:https://www.cnblogs.com/OpenCode...

dengshumi7891的博客 1138

如何在 ASP.NET Core 配置请求超时中间件

本文参考官方文档,使用Asp.net core 8.0 的最小API 模板项目,配置超时中间件。超时中间件可用于所有类型的ASP.NET Core应用:最小 API、带控制器的 Web API、MVC 和 Razor Pages。请求超时的属性位于命名空间 Microsoft.AspNetCore.Http.Timeouts 中。需要注意的是,当应用在调试模式下运行时,超时中间件不会触发。要测试超时,请运行未附加调试器的应用。

rjcql的专栏 1135
上一篇: ADO.NET的Connection Timeout和Command Timeout (转载)
下一篇: SQL Server中比较末尾带有空格的字符串遇到的坑 (转载)
davy57345
博客等级 码龄12年 8粉丝 123原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值