避免ASP.NET中View重复请求的最佳实践

席德

我有以下控制器:

[HttpPost]
public ActionResult SomeMethod(string foo, obj bar)
{
  //Some Logic 
}

现在假设从视图的角度来看,是从Button或Ajax(进行一些编辑)调用Action的,而我不想收到重复请求。

服务器端处理它的最佳方法是什么


更新

您首先必须定义满足双重请求条件的时间间隔– Jonesopolis

假设在这种情况下,两次调用是第一次和第二次调用之间的时间差小于1s时

克里斯·普拉特

坦白说,你不能,至少不是全部。您可以在服务器端执行某些操作,但都不是万无一失的。通常的想法是,您需要通过某种方式来标识POST。最常见的方法是使用GUID或类似设置来设置隐藏的输入。然后,当有请求进入时,将该GUID记录在某处这可以在会话中,也可以在数据库中,等等。然后,在处理请求之前,您检查用于该GUID的任何数据存储。如果存在,则它是重复的POST,如果不存在,则可以继续。

但是,这里的主要规定是您必须将其记录在某个地方,并且要花一些时间。可能只有几毫秒,但是对于重复的请求来说可能就足够了,特别是如果用户双击提交按钮,这通常是重复提交的原因。

Web服务器只是在请求进入时对其做出响应,重要的是,它具有多个线程,甚至可能有多个进程同时为请求服务。HTTP是无状态协议,因此服务器不关心客户端之前是否发出过相同的请求,因为它实际上不知道客户端之前发出过相同的请求。如果两个重复的请求实际上是同时在两个不同的线程上处理的,那么这是一个竞赛,要看一个人是否可以设置一个将另一个标识为重复的东西,然后再另一个检查它是否是重复的。换句话说,大多数情况下,您只是运气不好,无论您尝试在服务器端执行什么操作来停止重复项,这两个请求都会通过。

防止重复提交的唯一可靠方法是在使用JavaScript提交时禁用“提交”按钮。这样,即使双击,用户也只能有效地单击一次。当然,如果用户禁用JavaScript,那仍然无济于事,但是这种情况越来越少。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

ASP.NET Identity中角色与声明的最佳实践

来自分类Dev

在ASP.NET/MVC中验证复杂案例的最佳实践?

来自分类Dev

ASP.NET MVC中的最佳实践ViewModel验证

来自分类Dev

避免 SPAN 中的 DIV - 最佳实践

来自分类Dev

使用asp.net在数据库中插入数据时如何避免重复值?

来自分类Dev

ASP.NET模型的简单最佳实践

来自分类Dev

最佳实践-ASP.NET/实体框架

来自分类Dev

Asp.net避免重新加载整个页面

来自分类Dev

避免在 ASP.NET 上打印 HTML 标签

来自分类Dev

避免在 asp.net-mvc 中使用 _Layout-cshtml

来自分类Dev

我如何避免在ASP页面中查看状态

来自分类Dev

在Asp.Net MVC 5中实现多个数据库的最佳实践是什么?

来自分类Dev

在asp.net-mvc中引用特定于PartialView的javascript的最佳实践是什么?

来自分类Dev

在ASP.NET MVC中实现存储库模式和unitOfWork的最佳实践

来自分类Dev

在asp.net中缓存用户数据的最佳实践是什么

来自分类Dev

在asp.net mvc中返回错误的最佳实践是什么

来自分类Dev

类库中的ASP.Net ASMX Web服务(最佳实践)

来自分类Dev

在ASP.NET MVC中存储API访问密钥的最佳实践

来自分类Dev

在ASP.NET Core API中返回计算数据的最佳实践

来自分类Dev

在EF Core和ASP.NET Core中处理并发的最佳实践?

来自分类Dev

在asp.net中创建3层体系结构的最佳实践

来自分类Dev

在ASP.NET应用程序中检查会话的最佳实践

来自分类Dev

在asp.net-mvc中引用特定于PartialView的javascript的最佳实践是什么?

来自分类Dev

如何避免我的asp.net应用程序出现重复Cookie

来自分类Dev

将参数设置为对象并避免重复代码的最佳实践是什么?

来自分类Dev

在View中显示验证错误,避免重复

来自分类Dev

ASP .Net Identity,Dapper和存储过程最佳实践

来自分类Dev

ASP.NET MVC / WebApi的Azure表存储最佳实践

来自分类Dev

使用ASP.NET Web API处理错误的最佳实践

Related 相关文章

  1. 1

    ASP.NET Identity中角色与声明的最佳实践

  2. 2

    在ASP.NET/MVC中验证复杂案例的最佳实践?

  3. 3

    ASP.NET MVC中的最佳实践ViewModel验证

  4. 4

    避免 SPAN 中的 DIV - 最佳实践

  5. 5

    使用asp.net在数据库中插入数据时如何避免重复值?

  6. 6

    ASP.NET模型的简单最佳实践

  7. 7

    最佳实践-ASP.NET/实体框架

  8. 8

    Asp.net避免重新加载整个页面

  9. 9

    避免在 ASP.NET 上打印 HTML 标签

  10. 10

    避免在 asp.net-mvc 中使用 _Layout-cshtml

  11. 11

    我如何避免在ASP页面中查看状态

  12. 12

    在Asp.Net MVC 5中实现多个数据库的最佳实践是什么?

  13. 13

    在asp.net-mvc中引用特定于PartialView的javascript的最佳实践是什么?

  14. 14

    在ASP.NET MVC中实现存储库模式和unitOfWork的最佳实践

  15. 15

    在asp.net中缓存用户数据的最佳实践是什么

  16. 16

    在asp.net mvc中返回错误的最佳实践是什么

  17. 17

    类库中的ASP.Net ASMX Web服务(最佳实践)

  18. 18

    在ASP.NET MVC中存储API访问密钥的最佳实践

  19. 19

    在ASP.NET Core API中返回计算数据的最佳实践

  20. 20

    在EF Core和ASP.NET Core中处理并发的最佳实践?

  21. 21

    在asp.net中创建3层体系结构的最佳实践

  22. 22

    在ASP.NET应用程序中检查会话的最佳实践

  23. 23

    在asp.net-mvc中引用特定于PartialView的javascript的最佳实践是什么?

  24. 24

    如何避免我的asp.net应用程序出现重复Cookie

  25. 25

    将参数设置为对象并避免重复代码的最佳实践是什么?

  26. 26

    在View中显示验证错误,避免重复

  27. 27

    ASP .Net Identity,Dapper和存储过程最佳实践

  28. 28

    ASP.NET MVC / WebApi的Azure表存储最佳实践

  29. 29

    使用ASP.NET Web API处理错误的最佳实践

热门标签

归档