如何避免ASP.NET MVC中的重定向循环

时间:2010-01-21 19:46:07

标签: asp.net-mvc redirect infinite-loop

在某些错误情况下,我想重定向到Home控制器,但我想确保我没有进入“重定向”循环(每次生成异常导致另一个重定向)。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:3)

听起来你要求halting problem的解决方案(即“我想在异常时重定向到自己,但如果后续调用总是会抛出异常则不会重定向”)。

除非在这个领域进行研究(虽然暂停问题是无法解决的,你可以通过某些分析来消除相当多的情况)我会说你最好的办法是做firefox正在做的事情 - 记住如何发生了许多自重定向,如果超过某个计数,则停止重定向。

执行此操作的方法可能是包含一个参数,该参数随后的每个“异常抛出重定向”递增,并在决定是否重定向时与此参数进行比较。

答案 1 :(得分:1)

好吧,停止递归的一般方法是使用停止案例。在您的示例中,重定向可以查看其引荐来源,并确保它不会尝试“重定向”到引荐来源。

答案 2 :(得分:0)

简短的回答是不要重定向到家庭控制器。

而是重定向到静态错误消息页面。

这将更清洁,更稳定。