Каждый раз, когда вы используете Response.Redirect внутри блока try-catch, вы должны добавить второй параметр.
Вместо этого:
Response.Redirect("somepage.aspx");
Сделайте это:
Response.Redirect("somepage.aspx", false);
Если это логическое значение true, содержимое страницы отправляется на новую страницу (так что вы можете использовать значения формы).
Если это логическое значение false, содержимое страницы не отправляется. Это, вероятно, то, что вы хотите. Вы бы знали, если вам нужно правда.
Другой подход к этому - перехватить исключение ThreadAbortException в пустом блоке Catch.