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

不會(huì)觸發(fā)超時(shí)

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

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


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

