Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When Should I Use Response.Redirect(url, true)?

I'm redirecting to an Error page with a prettified error message in my Application_Error, in Global.asax.

At the moment it says:

Response.Redirect("Error.aspx", true); 

Should that be:

Response.Redirect("Error.aspx", false);  

I'm not sure under which circumstances I should use true and which I should use false? The MSDN page says to prefer using false to avoid ThreadAbortExceptions, so when should I use true?

like image 870
Jackson Pope Avatar asked Jul 15 '11 13:07

Jackson Pope


People also ask

What does Response redirect method do?

Response. Redirect sends an HTTP request to the browser, then the browser sends that request to the web server, then the web server delivers a response to the web browser. For example, suppose you are on the web page "UserRegister. aspx" page and it has a button that redirects you to the "UserDetail.

What is call redirect false?

Redirect("Default. aspx", false) means current page execution is not terminated and code written after the Response. Redirect("Default. aspx", false) is executed and then after the page is redirected to the Default.

What can I use instead of a response redirect?

For instance, instead of a "form" button that causes a postback and redirect, you could use a LinkButton that will behave like a hyperlink, allowing the browser to request the new page directly.

What is the difference between response redirect and server transfer?

Response. Redirect simply sends a message (HTTP 302) down to the browser. Server. Transfer happens without the browser knowing anything, the browser request a page, but the server returns the content of another.


Video Answer


1 Answers

You use false when you don't want to abort the thread. What that means is that false will cause the code to continue to execute. So lines of code which appear after the Response.Redirect will be executed. A true will just kill the thread so nothing further will execute, which in turn throws a ThreadAbortException.

So it's really a judgment call based on how the rest of the code in that situation looks. Generally you want to put calls to Response.Redirect at the end of an execution path so that nothing further needs to be executed. But many times that's not the case. It's just a matter of how you control the logic flow in the code.

For example, if the next line after Response.Redirect is a return and the execution path simply ends, then you're probably fine. But if there's all kinds of logic and executing it in this case would leave the system in an unknown state, then you may want to abort the thread.

Personally I consider aborting the thread to be indicative of poor logic control. It's similar to a well known code smell where exceptions are used to control logic flow, which is universally frowned upon. If you can control the logic flow without the need for aborting a thread and throwing an exception, that would probably be preferred.

like image 178
David Avatar answered Oct 06 '22 02:10

David