詳解如何在ASP.NET Core配置請求超時(shí)中間件
寫在前面
本文參考官方文檔,使用Asp.net core 8.0 的最小API 模板項(xiàng)目,配置超時(shí)中間件。
超時(shí)中間件可用于所有類型的ASP.NET Core應(yīng)用:最小 API、帶控制器的 Web API、MVC 和 Razor Pages。請求超時(shí)的屬性位于命名空間 Microsoft.AspNetCore.Http.Timeouts 中。
需要注意的是,當(dāng)應(yīng)用在調(diào)試模式下運(yùn)行時(shí),超時(shí)中間件不會觸發(fā)。要測試超時(shí),請運(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)行:
不會觸發(fā)超時(shí)
非調(diào)試模式下運(yùn)行
與預(yù)期一致觸發(fā)了超時(shí)
到此這篇關(guān)于詳解如何在ASP.NET Core配置請求超時(shí)中間件的文章就介紹到這了,更多相關(guān).NET配置請求超時(shí)中間件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#控制臺程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例
這篇文章主要介紹了C#控制臺程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例,本文中的2個(gè)關(guān)閉事件是指Ctrl+C事件和窗口的關(guān)閉按鈕事件,需要的朋友可以參考下2014-09-09C#后臺調(diào)用WebApi接口的實(shí)現(xiàn)方法
本文主要介紹了C#后臺調(diào)用WebApi接口的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06c#生成excel示例sql數(shù)據(jù)庫導(dǎo)出excel
這篇文章主要介紹了c#操作excel的示例,里面的方法可以直接導(dǎo)出數(shù)據(jù)到excel,大家參考使用吧2014-01-01Winform使用DataGridView實(shí)現(xiàn)下拉篩選
這篇文章主要為大家詳細(xì)介紹了Winform如何使用原生DataGridView實(shí)現(xiàn)下拉篩選功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-09-09C#使用FtpWebRequest與FtpWebResponse完成FTP操作
這篇文章介紹了C#使用FtpWebRequest與FtpWebResponse完成FTP操作的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05C#實(shí)現(xiàn)人民幣大寫轉(zhuǎn)換示例代碼
這篇文章主要介紹了C#實(shí)現(xiàn)人民幣大寫轉(zhuǎn)換,需要的朋友可以參考使用2013-12-12