【问题标题】:MVC Controller called again after redirecting to another view重定向到另一个视图后再次调用 MVC 控制器
【发布时间】:2016-06-17 15:27:16
【问题描述】:

我正在使用eWay 支付门户构建电子商务应用程序,但遇到了一个奇怪的问题。

在我的 eWay 设置中,我为支付网关提供了一个重定向 URL,用于返回我的应用程序。这可以正常工作,并且在回调方法结束时我使用RedirectToAction 重定向到Confirmation 视图。

但是,回调方法完成后,会再次调用它。只有第二次重定向到我的确认页面才能正确完成。

在 Fiddler 中,我似乎从我的回调方法对我的确认视图得到了正确的 302 响应,但是我得到了一个图标,即 Session was aborted by the client, Fiddler, or the Server。请注意,当 Fiddler 关闭时,这仍然会发生。

我的回调方法:

public ActionResult PurchaseCallback(string accessCode)
{
    // payment processing
    .....

    return RedirectToAction("Confirmation");
}

public ActionResult Confirmation()
{
    return View("Confirmation");
}

提琴手踪迹:

显示请求和响应标头的 Fiddler 跟踪:

注意对/Purchase/Purchase 的调用会重定向到eWay 门户,在隧道本身之前,在返回Purchase/PurchaseCallback 之前两次,最后到达/Purchase/Confirmation。还要注意第一个/PurchaseCallback 调用上的图标,它表示会话已中止。但是我不知道为什么会中止。

PurchaseCallback 没有关联的视图,Confirmation 的视图没有 JavaScript 或其他请求。我正在使用 IIS Express,但我在许多其他地方使用 RedirectToAction 模式没有问题。

什么会导致我的控制器方法被调用两次,我该如何阻止它发生?

【问题讨论】:

  • 这完全取决于您拥有的客户端代码
  • @Rob,正如我所提到的,从 eWay 返回后,没有处理重定向或其他请求的客户端代码。
  • 我认为我们不能在该跟踪上同时看到入站和出站数据包,对吧?你能告诉我们两个吗?
  • @JohnPeters 我不确定你的意思。突出显示的请求来自 eWay,并在响应中显示重定向到正确页面。
  • 跟踪只向我们显示对服务器的入站请求,我们看不到响应。

标签: c# asp.net-mvc redirect controller http-status-code-302


【解决方案1】:

检查您是否在 eWAY 共享页面设置 (doco here) 中启用了“付款处理后重定向”选项。有时这会在您单击按钮之前/之后创建对重定向页面的调用,这会创建两个调用(如果延迟设置为 5 秒,这尤其会成为问题)。

【讨论】:

  • 这正是答案,我什至将延迟设置为 5 秒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 2011-07-21
相关资源
最近更新 更多