如果一个请求在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();
option.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes();
})
.Build();

ASP.NET Core如何设置请求超时时间的更多相关文章

  1. vue 设置请求超时时间处理

    Vue.http.post('http://114.214.164.77:2222/crptorgraphy',{msg:JSON.stringify(req)},{emulateJSON:true, ...

  2. Linux下CURL设置请求超时时间

    使用CURL时,有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间. 连接超时时间用--connect-timeout参数来指定,数据传输的最大允许时间用-m参数来指定. 例如: cu ...

  3. AFN设置请求超时时间

    进入AFURLRequestSerialization.m 找到 - (NSMutableURLRequest *)requestWithMethod:(NSString *)method URLSt ...

  4. [Swift]Alamofire:设置网络请求超时时间【timeout】的两种方式

    两种方式作用相同,是同一套代码的两种表述. 第一种方式:集聚. 直接设置成员属性(全局属性),这种方法不能灵活修改网络请求超时时间timeout. 声明为成员属性: // MARK: - 设置为全局变 ...

  5. 【开源项目13】Volley框架 以及 设置request超时时间

    Volley提供了优美的框架,使android程序网络访问更容易.更快. Volley抽象实现了底层的HTTP Client库,我们不需关注HTTP Client细节,专注于写出更加漂亮.干净的RES ...

  6. 【轮询】【ajax】【js】【spring boot】ajax超时请求:前端轮询处理超时请求解决方案 + spring boot服务设置接口超时时间的设置

    场景描述: ajax设置timeout在本机测试有效,但是在生产环境等外网环境无效的问题 1.ajax的timeout属性设置 前端请求超时事件[网络连接不稳定时候,就无效了] var data = ...

  7. 转 HttpClient 设置连接超时时间

    要: HttpClient 4.5版本升级后,设置超时时间的API又有新的变化,请大家关注. HttpClient升级到4.5版本后,API有很多变化,HttpClient 4之后,API一直没有太稳 ...

  8. HttpClient设置连接超时时间

    https://www.cnblogs.com/winner-0715/p/7087591.html 使用HttpClient,一般都需要设置连接超时时间和获取数据超时时间.这两个参数很重要,目的是为 ...

  9. C# 的tcp Socket设置自定义超时时间

    简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...

随机推荐

  1. html/css学习笔记(一)

    ============================================================================================= 盒子模型 1 ...

  2. SD从零开始64-特异的业务交易(Special Business Transactions)

    紧迫订单Rush Orders 紧迫订单和现金销售是用在从工厂销售流程可能用于当客户需要求即刻从货场获得他们的货物时的销售凭据种类: 在即刻交货的销售凭据种类中,即刻交货符号和交货种类DF是设置的:当 ...

  3. MSys2安装QT5

    1. MSYS2 shell # pacman –Syuu 2. Reopen MSYS2 # pacman –Syuu 3.添加国内源 msys64\etc\pacman.d 目录下有三个文件 1. ...

  4. Salesforce 小知识 - 必需字段

    将字段定义为"必需" 当我们为对象设置字段的属性时,我们需要让某些字段在建立记录的时候必需有值,比如定义一个"地址"对象,那么必须填入"邮编" ...

  5. 自定义控件详解(二):Path类 相关用法

    Path:路径 绘制路径:void drawPath (Path path, Paint paint) Path 可以绘制的路径 一.直线路径 1.基本方法 void moveTo (float st ...

  6. 合理配置SQLSERVER内存

    合理配置SQLSERVER内存 原文地址:https://www.cnblogs.com/lyhabc/archive/2012/09/28/2707857.html SQLSERVER是个很喜欢内存 ...

  7. CPUFreq驱动

    CPUFreq子系统位于 drivers/cpufreq目录下,负责进行运行过程中CPU频率和电压的动态调整,即DvFS( Dynamic Voltage Frequency Scaling,动态电压 ...

  8. localStorage 知识点

    先补充下localStorage 知识点:JS对象读取形式:localStorage.name添加/修改localStorage.name = "xuanyuan"其中" ...

  9. vue-cli打包到部署到nginx服务器

    最近公司把云平台产品用vue 前后端分离的框架来写,前面大部分开发都比较顺利,后面打包部署出了bug 现在记录下自己遇到的哪些坑 1,我直接npm run build 打包出来,打开dist目录下面的 ...

  10. WPFの数据源事件变更通知

    如果数据绑定的目标是TextBox元素的Text属性,那么默认会使用双向绑定(Mode.TwoWay),此时用户可以通过更改TextBox元素Text属性的值从而更新源属性信息,但是如果在程序代码中更 ...