Внутри ASPX-страницы я хочу закончить ответ в определенных точках (не из-за ошибки), в зависимости от пути кода, так что больше ничего не будет отправлено обратно по потоку. Естественно используется:
Response.End();
Это приводит к возникновению ThreadAbortException, которое по дизайну.
Следующее, похоже, работает, но не похоже на правильный подход в соответствии с этим вопросом SO:
Response.Flush();
Response.Close();
Итак, как насчет этого?
Response.Flush();
Response.SuppressContent = true
а затем просто запустите страницу как обычно.
Я мог бы просто обработать и усвоить ThreadAbortException, но я просто хочу узнать, есть ли что-то неправильное /gotchas с подходом SuppressContent?
Edit: Чтобы дать немного больше примера. Скажем, у меня есть страница ASPX, в которой я могу изменить тип контента на один из нескольких вариантов. В зависимости от типа содержимого и сценария в данной точке кода я хочу предотвратить отправку большего количества контента клиенту. Предположим, что после того, как параметр SuppressContent установлен в значение true, нет проблемы с дальнейшим запуском на стороне сервера. Я просто не хочу, чтобы что-то еще было отправлено клиенту.
Изменить 2: MyPage.aspx - имеет главную страницу, которая может включать стандартное содержимое, заголовки, нижние колонтитулы и т.д. Эта страница может просто отображаться как обычная страница. Он также может просто выписать (например) XML-документ для загрузки. Если вы выписываете XML-документ (определенный при загрузке страницы), он очищает вывод, устанавливает тип содержимого в XML, записывает весь XML-выход, а затем, если он оставлен в обычном режиме, вы получаете остальную часть страницы ASPX-рендеринга, являющейся привязана к концу - это, очевидно, не требуется/ломает XML.
Изменить 3: На данный момент я использую метод SuppressContent. Чтобы попытаться довести этот вопрос до конца, я повышаю щедрость и ставит вопрос другим путем: когда вы должны использовать SuppressContent? Почему вы использовали его вместо Response.End?
Пожалуйста, ознакомьтесь с приведенным ниже ответом на решение, которое я на самом деле закончил, поскольку в итоге я нашел способ избежать исключения ThreadAbortException при использовании Response.End. Я уже не ответил на этот вопрос.