[英]temporarily enable/disable ASP.NET Core request handling
有沒有辦法在 ASP.NET 核心主機中暫時禁用請求處理? 我在啟動時初始化主機,但我的應用程序需要一些時間才能完全運行..所以雖然我需要主機提前啟動(如果它試圖綁定到一個已經在使用的端口,我想盡早知道), 我希望它閑置直到我的應用程序完全准備就緒。
您正在尋找的是Request Pipeline Short Circuiting using conditional Middleware 。
您將有一個 static boolean 字段讓我們說“IsInitializing”,默認值為 true。 然后你將有一個條件中間件 app.UseWhen 它將檢查這個 IsInitializing 字段的值,如果它是真的那么這個中間件將短路請求(你可以將一個字符串消息寫入 output 流)
完成所有引導初始化工作后,將 IsInitializing 設置為 false。 那么條件中間件 app.UseWhen 將永遠不會運行,您的請求管道將繼續到下一個中間件
這是示例代碼
程序.cs
public static bool IsInitializing { get; set; } = true;
啟動.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseWhen(ctx => Program.IsInitializing, appBuilder =>
{
appBuilder.Use(async (httpContext, next) =>
await httpContext.Response.WriteAsync("Server is initilizing, please try again after sometime...")
);
});
//...........................
//--- other request pipeline configuration code
//...........................
}
初始化過程完成后,您必須將Program.IsInitialing
屬性設置為 false。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.