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

写在前面

本文参考官方文档,使用Asp.net core 8.0 的最小API 模板项目,配置超时中间件。

超时中间件可用于所有类型的ASP.NET Core应用:最小 API、带控制器的 Web API、MVC 和 Razor Pages。请求超时的属性位于命名空间 Microsoft.AspNetCore.Http.Timeouts 中。

需要注意的是,当应用在调试模式下运行时,超时中间件不会触发。要测试超时,请运行未附加调试器的应用。

代码实现

using Microsoft.AspNetCore.Http.Timeouts;var builder = WebApplication.CreateBuilder(args);// Add services to the container.builder.Services.AddControllers();builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddRequestTimeouts();var app = builder.Build();
app.UseRequestTimeouts();// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI();
}app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();app.MapGet("/", async (HttpContext context) => {try{await Task.Delay(TimeSpan.FromSeconds(10), context.RequestAborted);}catch (TaskCanceledException){return Results.Content("Timeout!", "text/plain");}return Results.Content("No timeout!", "text/plain");
}).WithRequestTimeout(TimeSpan.FromSeconds(2));
// Returns "Timeout!"// 属性将终结点配置为超时
app.MapGet("/attribute",[RequestTimeout(milliseconds: 2000)] async (HttpContext context) => {try{await Task.Delay(TimeSpan.FromSeconds(10), context.RequestAborted);}catch (TaskCanceledException){return Results.Content("Timeout!", "text/plain");}return Results.Content("No timeout!", "text/plain");});app.Run();

调用示例

使用调试模式运行: 

不会触发超时

 非调试模式下运行

与预期一致触发了超时

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413565.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WAF攻防相关知识点总结2-代码免杀绕过

WAF的检测除了有对于非正常的流量检测外还对于非正常的数据包特征进行检测 以宝塔为例 在宝塔的后台可以放置一句话木马的文件 宝塔不会对于这个文件进行拦截,但是一旦我们使用菜刀蚁剑等webshell工具去进行连接的时候,数据报中有流量特征就会被拦截 …

Elastic Stack 8.12:通过对 ES|QL 等的改进增强了向量搜索

作者:来自 Elastic Tyler Perkins, Shani Sagiv, Gilad Gal, Ninoslav Miskovic Elastic Stack 8.12 构建于 Apache Lucene 9.9(有史以来最快的 Lucene 版本)之上,基于我们对标量量化和搜索并发性的贡献,为文本、向量和…

机器学习(一)—— 简介

参考书籍《机器学习和深度学习:原理、算法、实战》 文章目录 1 工业界流行的机器学习算法2 机器学习3 深度学习4 预备知识5 监督学习与无监督学习 1 工业界流行的机器学习算法 线型回归逻辑回归决策树随机森林梯度提升机人工神经网络卷积神经网络循环神经网络贝叶…

HTTP/HTTPS代理IP在多线程爬虫项目中的实践

在多线程爬虫项目中,HTTP/HTTPS代理IP的实践主要包括以下几个关键步骤: 1. 收集代理IP资源: - 从免费或付费代理IP提供商、公开代理列表网站(如西刺代理、无忧代理等)抓取代理IP和端口信息。 - 存储这些IP到数据库或者…

开发GPT的应用程序流程

开发一个基于GPT的应用程序(GPT APP)涉及到与GPT模型的集成,用户界面设计,以及应用程序的功能实现。以下是一个一般的开发流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&…

苹果Find My可查找添加32件物品,伦茨科技ST17H6x芯片加速产品赋能

苹果最近更新的支持文档证实,从 iOS 16 开始,"Find My"可查找添加物品从16件增加到32件,AirTag 和“查找”网络中的物品利用“查找”网络的强大功能来发挥作用,这个网络由数亿台加密的匿名 Apple 设备构成。“查找”网络…

Spark基础学习--基础介绍

1. Spark基本介绍 1.1 定义 Spark是可以处理大规模数据的统一分布式计算引擎。 1.2 Spark与MapReduce的对比 在之前我们学习过MapReduce,同样作为大数据分布式计算引擎,究竟这两者有什么区别呢? 首先我们回顾一下MapReduce的架构&#xf…

【VTKExamples::Filtering】第一期 TestContoursFromPolyData

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例TestContoursFromPolyData,并解析vtkCutter,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. TestContour…

前后端跨域问题解决

前后端跨域问题解决 一、前端解决跨域问题 找到以下文件 编写以下代码 const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServer: {//是否自动打开浏览器open: true,//修改默认8080端口号port: 8087,//跨域…

whale-quant 学习 part1:投资与量化投资

投资与量化投资 什么是投资投资的分类金融投资个人投资者投资品种投资-投机 常见的股票投资分析流派什么是量化投资量化投资的优势量化投资的主要风险 量化投资的历史发展**量化投资的一般流程常见量化投资平台参考 什么是投资 从经济学的广泛意义上讲,投资是为了获…

Win10下在Qt项目中配置SQlite3环境

资源下载 官网资源:SQLite Download Page 1、sqlite.h sqlite-amalgamation-3450000.zip (2.60 MiB) 2、sqlite3.def,sqlite3.dll sqlite-dll-win-x64-3450000.zip (1.25 MiB) 3、 win10下安装sqlite3所需要文件 sqlite-tools-win-x64-3450000.zipht…

【单片机】改写DS2431芯片的地址码,地址ROM,DS2431芯片解密

对DS2431里面的128字节可以进行任意读写,方式可以看这里:https://blog.csdn.net/x1131230123/article/details/132248958 但DS2431芯片的地址码是光刻不可修改的,所以只有使用模拟芯片。 原理: https://www.dianyuan.com/article…