重定向到另一个视图后,MVC Controller再次调用

时间:2016-03-04 02:17:43

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

我正在使用eWay付款网关构建电子商务应用程序,而且我遇到了一个奇怪的问题。

在我的eWay设置中,我提供了支付网关的重定向网址,用于返回我的应用程序。这项工作正常,在回调方法结束时,我使用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追踪:

enter image description here

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

enter image description here

请注意调用/Purchase/Purchase,该电话重定向到eWay门户网站,然后重定向到eWay隧道,然后返回Purchase/PurchaseCallback两次,最后到达/Purchase/Confirmation。另请注意第一个/PurchaseCallback电话上的图标,表示中止的会话。但是,我不知道为什么它会被中止。

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

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

1 个答案:

答案 0 :(得分:3)

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