重定向到另一个视图后再次调用 MVC 控制器

MVC Controller called again after redirecting to another view

我正在使用 eWay 支付门户构建一个 e-commerce 应用程序,但我 运行 遇到了一个奇怪的问题。

在我的 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 跟踪:

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

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

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

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

检查您是否在 eWAY 共享页面设置 (doco here) 中启用了 "Redirect after payment processing" 选项。有时这会在您单击按钮后创建对重定向页面 before/just 的调用,这将创建两个调用(如果延迟设置为 5 秒,这尤其是一个问题)。