詳解如何在ASP.NET Core配置請(qǐng)求超時(shí)中間件
寫在前面
本文參考官方文檔,使用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#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例
這篇文章主要介紹了C#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例,本文中的2個(gè)關(guān)閉事件是指Ctrl+C事件和窗口的關(guān)閉按鈕事件,需要的朋友可以參考下2014-09-09
C#后臺(tái)調(diào)用WebApi接口的實(shí)現(xiàn)方法
本文主要介紹了C#后臺(tái)調(diào)用WebApi接口的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
c#生成excel示例sql數(shù)據(jù)庫(kù)導(dǎo)出excel
這篇文章主要介紹了c#操作excel的示例,里面的方法可以直接導(dǎo)出數(shù)據(jù)到excel,大家參考使用吧2014-01-01
Winform使用DataGridView實(shí)現(xiàn)下拉篩選
這篇文章主要為大家詳細(xì)介紹了Winform如何使用原生DataGridView實(shí)現(xiàn)下拉篩選功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-09-09
C#使用FtpWebRequest與FtpWebResponse完成FTP操作
這篇文章介紹了C#使用FtpWebRequest與FtpWebResponse完成FTP操作的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
C#實(shí)現(xiàn)人民幣大寫轉(zhuǎn)換示例代碼
這篇文章主要介紹了C#實(shí)現(xiàn)人民幣大寫轉(zhuǎn)換,需要的朋友可以參考使用2013-12-12

