2013-08-26 147 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指定視圖名稱被解析。