【发布时间】:2014-09-01 12:17:25
【问题描述】:
我们开始将我们的旗舰应用程序从 ASP.NET Webforms 迁移到 ASP.NET MVC。由于它几乎是一次重写,因此我们正试图获得尽可能多的新功能。其中之一是新奇的async。我们正在尝试制作所有控制器和操作async(当然,这是有意义的),希望获得更好的性能。
但是我遇到的问题是Response.Redirect 甚至Server.Transfer 方法只是挂起请求。看起来某处出现了死锁。
很遗憾,因为我们已经习惯了Response.Redirect 方法,它会中止您正在执行的所有操作并重定向整个请求。非常方便,至少在网络表单中(使 POST-REDIRECT-GET 模式易于使用)。
此外,也许更重要的是,Response.Redirect 和 Server.Transfer 用于我们的 Application_Error 处理程序,它将请求转移到错误页面。我什至不知道那里可以使用任何替代品。
那么……我们有没有办法让Response.Redirect 起死回生?
【问题讨论】:
-
@Richard - 这个问题是关于 ASP.NET Webforms 的。这个是关于 MVC 的。此外,在那个问题中,建议通过将
false作为第二个参数传递来基本上放弃Response.Redirect(不中止请求,只是设置重定向标头)。在这里,我要求一种方法使其即使使用true作为第二个参数也能正常工作。所以我真的不认为它们是重复的。 -
记住重定向 API 在 WebForms 和 MVC 中是相同的......另外,链接的文章显示了在错误情况下如何避免中止使用重定向兼容版本的线程(昂贵)。
-
@Richard - 是的,但这种方法涉及传递任何适当的返回码。那我不妨使用
RedirectResult。相反,我想看看,如果我能以某种方式保持从代码中的任何位置执行重定向和中止请求的能力。我和我的程序员同事都非常习惯这种做法。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 redirect