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

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

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

我通过 services.AddRateLimiter(...) 添加全局和分区的 FixWindowLimiter 并通过 app.UseRateLimiter() 激活它。

我有一个控制器,它不能受到速率限制,因此我在该控制器上添加了属性 [DisableRateLimiting]。但是,这个属性被中间件忽略了,我不知道为什么会发生这种情况。

文档中写道,app.UseRouting()必须在app.UseRateLimiter()之前调用。我不使用 app.UseRouting(),而是使用 app.UseMvc(...),这是管道中的最后一个。 当我将 app.UseRateLimiter() 放在 app.UseMvc(...) 之后时,全局速率限制器不起作用。否则,控制器上的属性不起作用。

.net model-view-controller 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.