Peter
Peter

Reputation:

Using endResponse in a Response.Redirect

While performing a response.redirect in an ASP.NET page, I received the error:
error: cannot obtain value
for two of the variables being passed in (one value being retrieved from the querystring, the other from viewstate)

I've never seen this error before, so I did some investigating and found recommendations to use the "False" value for "endResponse"

e.g. Response.Redirect("mypage.aspx", False)

This worked.

My question is: what are the side-effects of using "False" for the "endResponse" value in a response.redirect?
i.e. are there any effects on the server's cache? Does the page remain resident in memory for a period? Will it affect different users viewing the same page? etc.

Thanks!

Upvotes: 6

Views: 12862

Answers (3)

Josh
Josh

Reputation: 44906

An MSDN blog post that might answer your question:

The drawback to using [Response.Redirect(url, false)] is that the page will continue to process on the server and be sent to the client. If you are doing a redirect in Page_Init (or like) and call Response.Redirect(url, false) the page will only redirect once the current page is done executing. This means that any server side processing you are performing on that page WILL get executed.

Upvotes: 4

Spongeboy
Spongeboy

Reputation: 2232

From this other question and this blog post, the recommended pattern is-

Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();

This avoids the expensive ThreadAbortException/Response.End. Some code will be executed after the CompleteRequest(), but ASP.Net will close the request as soon as it is convenient.

Edit- I think this answer gives the best overview. Note that if you use the pattern above, code after the redirect will still be executed.

Upvotes: 15

AndreasKnudsen
AndreasKnudsen

Reputation: 3481

Response.Redirect(..., true) results in a ThreadAbortException. depending on your exception handling setup you might get your log filled with error messages one for each redirect.

Upvotes: 2

Related Questions