Response.redirect raises "Thread was being aborted"

vb.netIis

vb.net Problem Overview


I've a VB.NET code called when I need to delete an object from DB. On Page_load I check if it's not post back (to prevent a manual refresh) and, after the deletion of the object I redirect to the caller page using Response.redirect. At this point my code raise an

> exception:EXCEPTION OCCURS In > File_delete.aspx.vb Line Number: 34 > Error Message: Thread was being > aborted.

and, on Event Viewer I can see that aspnet_wp.exe crashes:

> aspnet_wp.exe (PID: 1532) stopped > unexpectedly. > > For more information, see Help and > Support Center at > http://go.microsoft.com/fwlink/events.asp.

It's not clear why this happens only here because I use the response.redirect also to view the file and not only to delete it.

vb.net Solutions


Solution 1 - vb.net

By default, Response.Redirect() aborts the current thread. Naturally, this throws a ThreadAbortException. It can be prevented by passing a false to Response.Redirect(), which won't abort the current thread.

Be aware of what that means, however. If the thread is not aborted, the code following the Response.Redirect() will continue to execute. Control your logic flow accordingly. (This is often done with return statements and other flow control directives following a redirect.)

Solution 2 - vb.net

Response.Redirect will always throw a ThreadAbortException, according to MSDN documentation if you don't give a false boolean value to endResponse input parameter HttpRequest.Redirect(string, bool).

Just give false to endResponse parameter.

Solution 3 - vb.net

The list of options for solving this issue laid out here worked for me (I used #2): https://gist.github.com/cemerson/9dea993044a4e7fdca0e

Solution 4 - vb.net

Response.Redirect throws an exception by design. It is OK.

Solution 5 - vb.net

This could happens when you are making asynchronous calls. Use Response.Redirect(string url, false) where string url is the redirect url.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAndrea GirardiView Question on Stackoverflow
Solution 1 - vb.netDavidView Answer on Stackoverflow
Solution 2 - vb.netMatías FidemraizerView Answer on Stackoverflow
Solution 3 - vb.netChristopherView Answer on Stackoverflow
Solution 4 - vb.netgorView Answer on Stackoverflow
Solution 5 - vb.netRaphael MutisoView Answer on Stackoverflow