Я не могу объяснить, почему вы получаете результаты, которые вы есть. Я могу сказать вам, что если ваш код достигает строки, содержащей Response.Redirect
, то перенаправление произойдет независимо от того, находится ли он в процедуре Sub или нет.
Я бы сделал это предложение. Прекратите использовать On Error Resume Next
. Это очень болезненный способ справиться с исключениями.
Вместо этого измените HandleErrors
на GenerateConnectionError
. Его работа будет состоять в том, чтобы составлять строки ошибок и описания и преднамеренно вызывать Err.Raise
с определяемым пользователем номером ошибки (я склонен использовать 1001).
Теперь ваш Error.asp
должен быть установлен в корне вашего приложения в качестве обработчика для кода состояния HTTP 500.100. При возникновении ошибки сценария IIS ищет текущую коллекцию страниц ошибок, чтобы определить, что делать. Вы зададите этот параметр для выполнения URL-адреса и укажите свой Error.asp
в качестве URL-адреса.
Когда Error.asp будет запущен, он найдет подробную информацию о странице, запрашиваемой у QueryString
. Здесь вы также можете использовать Server.GetLastError
, чтобы получить объект ASPError
, из которого вы можете получить другие сведения об ошибке.
Использование этого подхода детализирует все ошибки скрипта, не требуя от разработчика не забывать перелистывать свой код кодом HandleError
. При выполнении кода, использующего ADODB.Connection, разработчик должен не забывать вызывать GenerateConnectionError
, и даже в этом случае вы, вероятно, можете абстрагировать его внутри включаемого файла .asp.