2013-08-26 92 views
1

当我使用RedirectToAction("MyView", "MyController")有时重定向非常缓慢呈现目标视图。Asp.net mvc 4 RedirectToAction慢

它并不总是会发生。

我使用ASP.net MVC4与IIS7.5

如何防止这一问题,并加快重定向?

+2

这还不是足够的信息去继续。你正在做什么'/ MyController/MyView'这可能导致服务器花费很长时间来处理? –

+1

问题很有趣,但@TimBLames说这是不够真实的信息。 –

+0

@TimBJames,不是真的..我的大部分页面都很简单(他们不使用任何数据库访问)。正如我所说的,它不会每次都发生。 我不知道这是否是IIS7问题。谢谢 – Stan92

回答

-1

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

+0

这会产生更多的问题,而不是解决这个问题 –

+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”和网络速度传递参数的额外行的这种开销变得更加显著下降。

+0

重定向更新客户端的URL。这可能很重要。 – cadrell0

+0

@ cadrell0是的。还有其他一些原因可以选择使用RedirectToAction(我至少有3个地方在我的最后一个项目中使用它),这就是为什么在原始评论中我说我不确定它是否适用于这种情况。刚才提到它是因为它确实导致了更快的响应。 – JTMon

0

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

@JTMon在您的代码“返回MyAction();”可能会导致潜在的问题,因为“MyAction”操作实际上会尝试加载名为“ActionIAmCurrentlyIn”的视图,因为这是路由值中指定的操作(至少我假设它是从哪里获取的,实际上没有挖出到代码中找出)。

return view("MyAction", MyModel); 
0

为了避免这个问题,并加快重定向使用:

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

这种做法不会改变客户端 - 服务器交互

这可以通过在MyAction指定视图名称被解析。