详解如何在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();
调用示例
使用调试模式运行:

不会触发超时

非调试模式下运行

与预期一致触发了超时


到此这篇关于详解如何在ASP.NET Core配置请求超时中间件的文章就介绍到这了,更多相关.NET配置请求超时中间件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
C#结合JS实现HtmlTable动态添加行并保存到数据库的流程步骤
在 Web 应用项目中,实现一对多录入的数据管理功能是一项常见的应用,因此可以实现一个相对轻量化的设计实现表格的录入,为保证功能的可用性、界面友好性,本文给大家介绍了C#结合JS实现HtmlTable动态添加行并保存到数据库,需要的朋友可以参考下2024-12-12
C#利用Spire.XLS for .NET将Excel转换为HTML格式
在数字化浪潮中,数据是核心,而Excel作为最常用的数据管理工具之一,其生成的报表、统计数据等常常需要发布到Web平台,供用户在线浏览或集成进Web应用,今天,我们将借助Spire.XLS库,快速实现Excel到HTML的精准转换,需要的朋友可以参考下2025-10-10


最新评论