1

我有一个常规的 Asp.Net 4.0 网络表单网站。当我做:

Response.Redirect("SomePage.aspx");

我希望我的下一行代码会被执行。然而,令人惊讶的是,下一行代码从未被执行。任何人都可以知道何时以及为什么会发生这种情况?

4

3 回答 3

5

原始 URL 指示的页面中的任何响应正文内容(例如显示的 HTML 文本或 Response.Write 文本)都将被忽略。另外,在处理 Redirect 方法时,当前页面中的代码执行被终止,因此该页面中的后续代码也将被忽略。

来源: http: //msdn.microsoft.com/en-us/library/ms524309 (v=vs.90).aspx

于 2012-05-09T04:28:49.320 回答
4

Response.Redirect也接受两个参数。第二个参数是一个布尔值,表示当前页面的执行是否应该终止。

因此,调用Response.Redirect("Page.aspx",false)将执行后续代码行,并避免ThreadAbortException被淹没在您的日志文件中。

更新:回答为什么默认行为是不执行

什么时候Response.Redirect使用,期望是只向客户端发送 302 标头。因此默认情况下,它会刷新响应并中止当前线程,因此不会执行后续操作。

Example, in the authorization / authentication module once we know that the user is not eligible to access the resource, we just do a redirection and rest of the event life cycle should not get executed for security reasons.

于 2012-05-09T04:33:03.900 回答
-1

response.redirect 等于函数中的 return 语句。所以你在 return 之后写的任何行都不会被执行。response.redirect() 也是如此。在 response.redirect() 之后当前页面执行终止

于 2012-05-09T04:32:38.117 回答