By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,312 Members | 1,248 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,312 IT Pros & Developers. It's quick & easy.

"Thread was being aborted" exception on redirect - VERY weird!!

P: n/a
Hello,

I have a page that is supposed to do some checking, and if OK, set a
session variable before redirecting to another page. The following code
is a simplified version, I have hard-coded the basket ID and removed a
load of extra checking...

public partial class GoToCheckout : Page {
public void Page_Load(Object o, EventArgs e) {
try {
Session["basketid"] = "178";
//x.Text = "redirecting to PreCheckout.aspx";
Response.Redirect("PreCheckout.aspx");
} catch (Exception ex) {
Response.Redirect("/?msg=" + ex.Message);
//x.Text = "exception - " + ex.Message;
}
}
}

When this page is called, it throws a "Thread was being aborted"
exception when it hits the line...

Response.Redirect("PreCheckout.aspx");

The catch block picks it up and redirects to the home page, putting the
exception message in the querystring. I did this because if I comment
out the redirect in the catch and instead use the (commented out) x.Text
bit (x is a literal, put on the otherwise empty .aspx file for
debugging), then the redirect works fine!!

If I comment out the redirect in the try block and uncomment the x.Text
line there, then the page displays the message "redirecting to
PreCheckout.aspx" exactly as expected.

So, it seems there's some weird problem with the redirect, but I can't
work it out. Nor can I work out why changing the behaviour of the code
in the catch block changes whether the exception is raised or not.

This code has been working fine for a few months now. I have recently
been changing pages to use master pages and themes, which is when I
noticed the problem. However, if I now change this page back to not use
a master or theme, the problem is still there. I am totally baffled, and
would appreciate any help you can offer. TIA

--
Alan Silver
(anything added below this line is nothing to do with me)
Dec 6 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
There is a second, optional parameter to the Response.Redirect call. It
is a boolean value that indicates whether or not to continue processing
the current page. Set it to false, and you should not get the errors
anymore.

Example:

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

JP

Alan Silver wrote:
Hello,

I have a page that is supposed to do some checking, and if OK, set a
session variable before redirecting to another page. The following code
is a simplified version, I have hard-coded the basket ID and removed a
load of extra checking...

public partial class GoToCheckout : Page {
public void Page_Load(Object o, EventArgs e) {
try {
Session["basketid"] = "178";
//x.Text = "redirecting to PreCheckout.aspx";
Response.Redirect("PreCheckout.aspx");
} catch (Exception ex) {
Response.Redirect("/?msg=" + ex.Message);
//x.Text = "exception - " + ex.Message;
}
}
}

When this page is called, it throws a "Thread was being aborted"
exception when it hits the line...

Response.Redirect("PreCheckout.aspx");

The catch block picks it up and redirects to the home page, putting the
exception message in the querystring. I did this because if I comment
out the redirect in the catch and instead use the (commented out) x.Text
bit (x is a literal, put on the otherwise empty .aspx file for
debugging), then the redirect works fine!!

If I comment out the redirect in the try block and uncomment the x.Text
line there, then the page displays the message "redirecting to
PreCheckout.aspx" exactly as expected.

So, it seems there's some weird problem with the redirect, but I can't
work it out. Nor can I work out why changing the behaviour of the code
in the catch block changes whether the exception is raised or not.

This code has been working fine for a few months now. I have recently
been changing pages to use master pages and themes, which is when I
noticed the problem. However, if I now change this page back to not use
a master or theme, the problem is still there. I am totally baffled, and
would appreciate any help you can offer. TIA

--
Alan Silver
(anything added below this line is nothing to do with me)


Dec 6 '05 #2

P: n/a
I think what's happening is that your first Redirect is ending the page
execution, and thus the request/response. Try passing in "false" as a
second param to Redirect to see if that helps; it tells the redirect not to
end the thread on that call. Another option, since you're within your
application, is to use Server.Transfer instead, as it's more efficient
within the app.
Dec 6 '05 #3

P: n/a
>There is a second, optional parameter to the Response.Redirect call. It
is a boolean value that indicates whether or not to continue processing
the current page. Set it to false, and you should not get the errors
anymore.


Thanks for the reply. Shortly after posting (ain't that always the
way!!), I found http://tinyurl.com/cj3qp where someone points out that
using Response.Redirect inside a try/catch blocks throws this exception.
I moved it outside the block and the problem went away.

I may change it back and try it with this second parameter though as the
code was neater before.

Thanks for the reply.

--
Alan Silver
(anything added below this line is nothing to do with me)
Dec 6 '05 #4

P: n/a
>I think what's happening is that your first Redirect is ending the page
execution, and thus the request/response. Try passing in "false" as a
second param to Redirect to see if that helps; it tells the redirect not to
end the thread on that call. Another option, since you're within your
application, is to use Server.Transfer instead, as it's more efficient
within the app.


Thanks. See my reply to Joey ;-)

--
Alan Silver
(anything added below this line is nothing to do with me)
Dec 6 '05 #5

P: n/a
>I may change it back and try it with this second parameter though as
the code was neater before.


I did, and it was ;-)

Thanks again to both of you

--
Alan Silver
(anything added below this line is nothing to do with me)
Dec 6 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.