Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Chrome双重请求导致副作用_C#_Asp.net Mvc_Google Chrome_Http - Fatal编程技术网

C# Chrome双重请求导致副作用

C# Chrome双重请求导致副作用,c#,asp.net-mvc,google-chrome,http,C#,Asp.net Mvc,Google Chrome,Http,我在Chrome中遇到了一个问题,导致两个请求被发送到我的.NETMVC应用程序。我有一个控制器,它正在侦听请求,并在收到请求时更改一些应用程序状态。这种情况会发生两次,用户只会期望一次,因此最终会出现意外状态 我的工作原理是,这是由Chrome的一个名为“”的功能造成的,该功能应该在您在omni栏中键入时请求页面,但我不确定 为了解决这个问题,我尝试让控制器只接受POST请求,但这带来了新的问题。网站管理员需要能够从外部网站或营销电子邮件等位置链接到此操作。当操作接受帖子时,这样的链接会导致错

我在Chrome中遇到了一个问题,导致两个请求被发送到我的.NETMVC应用程序。我有一个控制器,它正在侦听请求,并在收到请求时更改一些应用程序状态。这种情况会发生两次,用户只会期望一次,因此最终会出现意外状态

我的工作原理是,这是由Chrome的一个名为“”的功能造成的,该功能应该在您在omni栏中键入时请求页面,但我不确定

为了解决这个问题,我尝试让控制器只接受POST请求,但这带来了新的问题。网站管理员需要能够从外部网站或营销电子邮件等位置链接到此操作。当操作接受帖子时,这样的链接会导致错误

以下是控制器操作:

public ActionResult HandleMembershipRequest(
  int amount, 
  int fundID, 
  bool waiveBenefits, 
  DateTime? dateOfBirth, 
  bool? isGift, 
  bool? autoRenew)
    { \\change some application state }
我们用来链接到该操作的URL如下所示:
/membershipRequest/HandleMembershipRequest?amount=150&弃权福利=False&fundID=1058

我想知道:

  • 是什么导致了这个问题
  • 如何在允许链接到此操作的同时防止重复请求

  • 为了防止重复请求,首先想到的是跟踪该请求是否已在会话状态下处理,或者上次处理的时间。我不知道单个用户需要多久调用一次该操作,但您可以在(例如)最后一个请求的30秒内防止重复。@LukeSamuel这会起作用,但我认为必须有一种更优雅的方法来实现这一点,而不是在操作进入时记录操作并相互检查。这将在web服务器上增加大量开销。