Подтвердить что ты не робот

Response.redirect повышает "Thread был прерван"

У меня есть код VB.NET, когда мне нужно удалить объект из базы данных. On Page_load Я проверяю, не отсылает ли он назад (чтобы предотвратить обновление вручную), и после удаления объекта я перенаправляюсь на страницу вызывающего абонента с помощью Response.redirect. На этом этапе мой код вызывает

исключение: EXCEPTION OCCURS In File_delete.aspx.vb Номер строки: 34 Сообщение об ошибке: Тема была прервана.

а в средстве просмотра событий я вижу, что сбой aspnet_wp.exe:

aspnet_wp.exe(PID: 1532) остановлен неожиданно.

Дополнительные сведения см. в справке и Центр поддержки http://go.microsoft.com/fwlink/events.asp.

Не понятно, почему это происходит только здесь, потому что я также использую response.redirect для просмотра файла и не только для его удаления.

4b9b3361

Ответ 1

По умолчанию Response.Redirect() отменяет текущий поток. Естественно, это бросает a ThreadAbortException. Этого можно предотвратить, передав false в Response.Redirect(), который не прервет текущий поток.

Помните, что это значит. Если поток не прерывается, код, следующий за Response.Redirect(), будет продолжать выполняться. Контролируйте свой логический поток соответственно. (Это часто делается с помощью операторов return и других директив управления потоками после перенаправления.)

Ответ 2

Response.Redirect всегда будет генерировать ThreadAbortException соответствии с документацией MSDN, если вы не endResponse false логическое значение для входного параметра endResponse HttpRequest.Redirect(string, bool).

Просто дайте false параметру endResponse.

Ответ 4

Response.Redirect генерирует исключение по дизайну. Все в порядке.

Ответ 5

Это может произойти, когда вы делаете асинхронные вызовы. Используйте Response.Redirect(string url, false), где string url - это URL-адрес перенаправления.