【发布时间】:2016-11-22 14:49:34
【问题描述】:
我有以下控制器:
[HttpPost]
public ActionResult SomeMethod(string foo, obj bar)
{
//Some Logic
}
现在假设从 Button 或 Ajax 调用 Action 的视图(经过一些编辑),我不想收到双重请求。
从服务器端处理它的最佳方法是什么?
更新
您首先必须定义满足 双重请求的标准 - Jonesopolis
假设在这种情况下,双重请求是当第一次和第二次调用之间的时间差小于 1s 时
【问题讨论】:
-
您首先必须定义满足双重请求标准的时间间隔
-
您可以将给定用户、IP 地址、用户代理组合调用此请求的时间存储在 session\cache\中。然后检查该缓存,如果不到 1 秒,则拒绝请求(或在这种情况下执行您需要的操作)。更有趣的是是什么导致你在服务器端处理这个......
-
虽然您放置了“服务器端” - 通常,这在 UI 上更容易处理,例如消除请求或禁用按钮。并非万无一失,但取决于场景,通常适用于 Intranet 应用程序。
-
如果您想防止恶意用户向您的服务发送垃圾邮件,那就完全不同了。
标签: c# asp.net asp.net-mvc