c# - 始终执行条件中间件

标签 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 中间件。

最佳答案

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

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

关于c# - 始终执行条件中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55045821/

相关文章:

c# - 对于对未映射 URL 的未经身份验证的请求,ASP.NET Core Minimal API 返回 404 代码而不是 401

asp.net-core - 如何使用 .NET Core Web API 和 OData v4 过滤 SQL Server DateTime

c# - 套接字同步发送优于异步开始发送/结束发送吗?

c# - 如何检测IE9中启用了哪些插件?

c# - 如何使用中间件代替 Controller 初始化?

c# - System.ObjectDisposeException : Cannot access a disposed object. 对象名称: 'Cannot access a closed file.'

c# - 应用程序在未读取整个请求正文的情况下完成,.net core 2.1.1

C# vuforia.image.pixels 覆盖到 iOS CIImage 或 CGImage

c# - 解析器错误 : '_Default' is not allowed here because it does not extend class 'System.Web.UI.Page' & MasterType declaration

asp.net-core - 如何为 View 设置回退资源文件