簡體   English   中英

臨時啟用/禁用 ASP.NET 核心請求處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM