条件中间件总是执行

时间:2019-03-07 14:11:29

标签: c# asp.net-core asp.net-core-webapi

我已在我的ASP.NET Core Web-API 2.1应用程序中添加了自定义中间件,仅对于某些请求才需要执行该中间件。问题在于,它总是在管道中执行。

Startup.cs

app.UseWhen(context => context.Request.Path.Value.Contains("AWS"), appBuilder =>
{
    app.UseMiddleware<ValidateHeaderHandler>();
});

上面的代码完全忽略了条件,并始终执行ValidateHeaderHandler中间件。

1 个答案:

答案 0 :(得分:2)

您需要在UseMiddleware()对象上而不是直接在appBuilder上调用app方法:

app.UseWhen(context => context.Request.Path.Value.Contains("AWS"), appBuilder =>
{
    appBuilder.UseMiddleware<ValidateHeaderHandler>();
});