Response.Redirect, in an attempt to mimic the old ASP behavior of stopping execution of the current page at the moment it is reached, raises a ThreadAbortException that is then catched by ASP.NET that performs the redirection. This is certainly overkill, just pass false as the second parameter and then be careful to exit the current function.