当前位置:  开发笔记 > 编程语言 > 正文

Response.Redirect没有结束执行

如何解决《Response.Redirect没有结束执行》经验,为你挑选了2个好方法。

我有Default.aspx页面,它继承自BasePage.cs,它继承自System.Web.UI.Page.BasePage是我在加载时每页必须做的一些常见事情.

在BasePage中,假设我正在检查X.如果X = 1,那么我将立即重定向到我的"Discontinued.aspx"页面并停止执行BasePage.如果我发现X = 1,我说:

HttpContext.Current.Response.Redirect("Discontinued.aspx",true);

我希望重定向停止执行BasePage并立即跳出 - 因此上面语句中的"true" - 应该停止执行当前页面,据我所知.问题是,它没有.我期待重定向抛出"线程中止异常".

当我在调试模式下运行时,它会逐步调整,就好像它不仅仅是重定向和离开一样.

但重定向仍然开始 - 一旦我完成了其他的BasePage,"Discontinued"页面就会因重定向而开始加载.

有没有理由我的Redirect不会杀死BasePage的执行?



1> Shawn..:

Response.Redirect的第二个参数是endResponse,但工具提示显示"指示当前页面的执行是否应该终止".这是误导性的,因为当变量为true时,页面的执行实际上不会终止.它将完成运行任何代码.然而,不同的是,Render事件被取消,并且响应立即被对象移动的头部刷新.

您需要手动退出任何方法,Response.Redirect/Response.End将不会为您执行此操作.此外,如果您需要条件来查看页面是否已被重定向,请查看Response.IsRequestBeingRedirected.


是.除了,你并不总是想那样做
好的东西要知道 - 谢谢.由不准确的工具提示挫败!

2> Steven A. Lo..:

你是退出调用重定向的函数,例如

...redirect(stopit,true);
return;

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有