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