詳解如何在ASP.NET Core配置請求超時中間件
寫在前面
本文參考官方文檔,使用Asp.net core 8.0 的最小API 模板項目,配置超時中間件。
超時中間件可用于所有類型的ASP.NET Core應(yīng)用:最小 API、帶控制器的 Web API、MVC 和 Razor Pages。請求超時的屬性位于命名空間 Microsoft.AspNetCore.Http.Timeouts 中。
需要注意的是,當(dāng)應(yīng)用在調(diào)試模式下運(yùn)行時,超時中間件不會觸發(fā)。要測試超時,請運(yùn)行未附加調(diào)試器的應(yīng)用。
代碼實現(xiàn)
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!"
// 屬性將終結(jié)點配置為超時
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();
調(diào)用示例
使用調(diào)試模式運(yùn)行:

不會觸發(fā)超時

非調(diào)試模式下運(yùn)行

與預(yù)期一致觸發(fā)了超時


到此這篇關(guān)于詳解如何在ASP.NET Core配置請求超時中間件的文章就介紹到這了,更多相關(guān).NET配置請求超時中間件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實現(xiàn)Socket服務(wù)器及多客戶端連接的方式
這篇文章介紹了C#實現(xiàn)Socket服務(wù)器及多客戶端連接的方式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01
C#結(jié)合JS實現(xiàn)HtmlTable動態(tài)添加行并保存到數(shù)據(jù)庫的流程步驟
在 Web 應(yīng)用項目中,實現(xiàn)一對多錄入的數(shù)據(jù)管理功能是一項常見的應(yīng)用,因此可以實現(xiàn)一個相對輕量化的設(shè)計實現(xiàn)表格的錄入,為保證功能的可用性、界面友好性,本文給大家介紹了C#結(jié)合JS實現(xiàn)HtmlTable動態(tài)添加行并保存到數(shù)據(jù)庫,需要的朋友可以參考下2024-12-12
利用C#實現(xiàn)SSLSocket加密通訊的方法詳解
這篇文章主要給大家介紹了關(guān)于如何利用C#實現(xiàn)SSLSocket加密通訊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
C#利用Spire.XLS for .NET將Excel轉(zhuǎn)換為HTML格式
在數(shù)字化浪潮中,數(shù)據(jù)是核心,而Excel作為最常用的數(shù)據(jù)管理工具之一,其生成的報表、統(tǒng)計數(shù)據(jù)等常常需要發(fā)布到Web平臺,供用戶在線瀏覽或集成進(jìn)Web應(yīng)用,今天,我們將借助Spire.XLS庫,快速實現(xiàn)Excel到HTML的精準(zhǔn)轉(zhuǎn)換,需要的朋友可以參考下2025-10-10

