Любопытная информация по поводу Response.Redirect... Следующий код
Try ' Do anything here Response.Redirect("http://www.microsoft.com") Catch ex As Exception Session("error") = ex.message Response.Redirect("errors.aspx") End Try
всегда (!) вызовет зайдет в Catch потому что "Redirect calls End which raises a ThreadAbortException exception upon completion", что означает, что выполнение самого редиректа посредине кода вызовет исключение ThreadAbortException.
Классно? :-)
Решение проблемы с исключением может быть таким
Try Response.Redirect("http://www.microsoft.com") Catch ex As System.Threading.ThreadAbortException ' Do nothing; redirect will jump to desired target. Catch ex As Exception Session("error") = ex.message Response.Redirect("errors.aspx") End Try
где как видно ThreadAbortException специально отлавливается
где используется false, чтобы после редиректа (!) продолжать выполнять код исходной страницы. Бояться того, что исходная страница будет отображена не надо, редирект будет все равно выполнен, но продолжение выполнения кода может без надобности нагрузить сервер, так что первый метод отлова исключения предпочтителен.