有什么东西可以阻止Response.Redirect在try-catch块内工作吗?我在使用response.redirect()时遇到了一些奇怪的错误,并且项目根本没有构建。当我删除代码块周围的try-catch块时,Response.Redirect()在其中工作正常。只是想知道这个这是一个已知问题还是什么...如果我没记错的话,Response.Redirect()会抛出一个异常来中止当前请求(ThreadAbortedException或类似的东西)。所以你可能会捕捉到那个异常。编辑:这篇知识库文章描述了这种行为(也适用于Request.End()和Server.Transfer()方法)。对于Response.Redirect(),有一个重载:Response.Redirect(Stringurl,boolendResponse)如果传入endResponse=false,则不会抛出异常(但运行时会继续处理当前请求)。如果endResponse=true(或者如果使用了另一个重载),则会抛出异常并立即终止当前请求。正如Martin指出的那样,Response.Redirect抛出ThreadAbortException。解决方案是重新抛出异常:try{Response.Redirect(...);}catch(ThreadAbortException){抛出;//编辑:显然这不是必需的:-)}catch(Exceptione){//捕获其他异常}Martin是正确的,当您使用Response.Redirect时会抛出ThreadAbortException,请参阅此处的知识库文章您可能正在引用一个在try块中声明的变量。例如,下面的代码是无效的:try{varb=bool.Parse("Yeah!");}catch(Exceptionex){if(b){Response.Redirect("somewhereelse");您应该在try-catch块之外将b声明为Move。变量b=假;尝试{b=bool.Parse("是的!");}catch(Exceptionex){if(b){Response.Redirect("somewhereelse");我不认为这里有任何已知的问题。您根本无法在try/catch块内执行Redirect(),因为Redirect将当前控件留给另一个.aspx(例如),这使得catch无法返回(无法返回)。编辑:另一方面,我可能已经取消了所有这些。感到抱歉。C#学习教程就是这样:是否存在阻止Response.Redirect在try-catch块内工作的内容?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
