簡體   English   中英

通過條件Asp.Net Core調用中間件組件

[英]Call middleware component by condition Asp.Net Core

是否可以僅對不是來自js的請求執行中間件。 因為我有一個中間件,執行該中間件對於向服務器發送js請求並沒有多大意義。 有沒有可能的方法來檢查請求不是直接的?

您不能僅對某些請求執行中間件,但是如果請求中存在標頭,則可以檢查該請求是否滿足中間件中的條件。

假設調用您的api的js客戶端在每個請求中添加了一個自定義標頭,您可以編寫中間件檢查該標頭並執行一些代碼(如果標頭存在)。

app.Use((context, next) =>
{
    if (context.Request.Headers.Any(h => h.Key == "Custom-Header"))
    {
           DoStuff();
    }

    return next();
})

對於執行特定請求的中間件,您可以嘗試MapWhen

public void Configure(IApplicationBuilder app)
{
    app.MapWhen(context => context.Request.Query.ContainsKey("branch"),
                           HandleBranch);

    app.Run(async context =>
    {
        await context.Response.WriteAsync("Hello from non-Map delegate. <p>");
    });
}

為了檢查是否處理請求,請實現自己的邏輯以替換context.Request.Query.ContainsKey("branch")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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