我們開始將我們的旗艦應用程序從ASP.NET Webforms遷移到ASP.NET MVC。由於它幾乎是一個重寫,我們試圖獲得儘可能多的好新功能。其中之一是新奇的async
。我們正試圖讓所有的控制器和動作(當然是有道理的)async
希望獲得更好的性能。如何獲得使用ASP.NET MVC和異步的Response.Redirect?
但是我遇到的問題是Response.Redirect
甚至Server.Transfer
方法只是掛起請求。它看起來像是某處出現死鎖。
這是一個遺憾,因爲我們非常習慣於Response.Redirect
方法,它會中止您正在做的所有事情並重定向整個請求。非常方便,至少在webforms中(使POST-REDIRECT-GET模式易於使用)。
此外,也許更重要的是,Response.Redirect
和Server.Transfer
用於我們的Application_Error
處理程序,它將請求傳輸到錯誤頁面。我甚至不知道可以在那裏使用的任何替代品。
那麼......有沒有辦法讓Response.Redirect
恢復生機?
@Richard - 這個問題是關於ASP.NET Webforms的。這個是關於MVC的。另外,在這個問題中,有人建議通過傳遞'false'作爲第二個參數(不中止請求,只設置重定向頭)來基本放棄'Response.Redirect'。在這裏,我正在尋求一種方法,即使使用'true'作爲第二個參數,它也能工作。所以我真的不認爲他們是重複的。 – 2014-09-01 12:47:05
請記住,重定向API在WebForms和MVC中是相同的......此外,鏈接的文章還顯示了在錯誤情況下如何避免中止使用重定向兼容版本的線程(昂貴)。 – Richard 2014-09-01 13:39:41
@Richard - 是的,但該方法涉及傳遞任何適當的返回代碼。那麼我不妨使用'RedirectResult'。相反,我想看看,如果我能以某種方式保持從我的代碼中的任何地方執行重定向和中止請求的能力。我和我的其他程序員都非常習慣這種做法。 – 2014-09-01 15:02:25