我们实施了类似于此SO问题中描述的用户限制:Best way to implement request throttling in ASP.NET MVC?
然而,我们遇到了一个问题。我们有某些导致重定向的操作。我们的限制是将重定向视为与任何其他用户生成的请求相同,并触发"您必须等待"代码的一部分,即使用户与第二个动作无关。
我们已经尝试修改油门以仅在动作和控制器相同时才触发但我们在某些情况下我们对URL进行更改并在内部重定向以规范化URL或添加查询字符串参数等。
我们基本上想要告诉限制因素忽略所有内部生成的重定向,因为我们意味着要发生这些重定向,但我无法找到检测请求是重定向结果的方法。
提前谢谢!
答案 0 :(得分:0)
在所有地方搜索之后,我们认为这种方法不起作用且无法使用。
最后,我们决定编写自己的重定向,以在执行重定向之前删除节流缓存键。这些新的重定向为我们提供了更多的控制和更好的灵活性,并防止我们的用户因为应用程序重定向而导致我们的油门崩溃(这不是他们的错)。
答案 1 :(得分:0)
是的,你可以
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string action = "MyAction;
string controller = "MyController";
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action, controller}));
}