Asp.net mvc 4 RedirectToAction很慢

时间:2013-08-26 08:08:23

标签: asp.net-mvc asp.net-mvc-4

当我使用RedirectToAction("MyView", "MyController")时,有时重定向很慢,无法呈现目标视图。

并非总是如此。

我正在使用带有IIS7.5的ASP.net MVC4

如何防止此问题并加快重定向?

4 个答案:

答案 0 :(得分:0)

我会把它放在这里,因为代码在评论部分不会很好地显示。如果要重定向到的操作方法位于当前所在的控制器中,则直接调用该方法并返回其结果而不是RedirectToAction方法生成的重定向响应更简单,更有效。为了确保我们在同一页面上,RedirectToAction实际上向客户端返回一个重定向响应(302),要求它向您根据MSDN http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction(v=vs.108).aspx指定的操作方法发出新请求。一些代码来说明:

public ActionResult MyAction(){
    //do some work here
    Return View(MyModel);
}

public ActionResult ActionIAmCurrentlyIn(){
    //Do Soe work here
    return RedirectToAction ("MyAction", "MyController"); //This costs an extra trip across the wire
    return MyAction(); // Does same thing but without the extra trip to the client
}

如果有参数传递给“MyAction”并且网络速度下降,额外旅行的开销会变得更加显着。

答案 1 :(得分:0)

作为答案回应,因为我没有足够的代表添加评论......

@JTMon在你的代码中“return MyAction();”可能导致潜在问题,因为“MyAction”操作实际上会尝试加载一个名为“ActionIAmCurrentlyIn”的视图,因为这是在路由值中指定的操作(至少我认为它是从它获取它的地方,我实际上没有挖过进入代码找出来。)

这可以通过在MyAction中指定视图名称来解决:

 return view("MyAction", MyModel);

答案 2 :(得分:0)

要防止出现此问题并加快重定向使用,请执行以下操作:

return Redirect("~/MyController/MyView");

此方法不会改变客户端 - 服务器交互。

答案 3 :(得分:-1)

您可以使用RedirectToActionPermanent("View","Controller");