ASP.NET Core MVC 中的速率限制中间件

问题描述 投票:0回答:1

我正在尝试将速率限制中间件添加到我的 ASP.NET Core MVC Web 应用程序中。

我添加了一个全局和分区的

FixedWindowLimiter
via

services.AddRateLimiter(...) 

并使用

激活它
app.UseRateLimiter()

我有一个控制器,它不能受到速率限制,因此我在该控制器上添加了属性

[DisableRateLimiting]
。但是,这个属性被中间件忽略了,我不知道为什么会发生这种情况。

文档中写道,必须在

app.UseRouting()
之前调用
app.UseRateLimiter()
。我不使用
app.UseRouting()
, 但是
app.UseMvc(...)
,这是管道中的最后一个。

当我将

app.UseRateLimiter()
放在
app.UseMvc(...)
之后时,全局速率限制器不起作用。否则,控制器上的属性不起作用。

asp.net-core-mvc middleware rate limiting
1个回答
0
投票

从app.UseMvc()切换到app.UseRouting()和app.UseEndpoints()。这与速率限制器所需的中间件管道一致,并确保管道顺序正确:

app.UseRouting();
app.UseRateLimiter();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });

这应该可以修复全局速率限制器和 [DisableRateLimiting] 属性。

© www.soinside.com 2019 - 2024. All rights reserved.