Поймать 500 ошибок после Response.Flush () - PullRequest
2 голосов
/ 13 октября 2011

Как только данные были сброшены на страницу, и в будущих процессах генерируется ошибка, сообщение об ошибке записывается в браузере, а не генерирует целую ошибку 500 на странице.Как перехватить те ошибки, которые записываются на страницу после вызова Response.Flush()?Send Errors to Browser установлено = True, но ошибка не вызывает страницу 500 Error, а только вызывает сообщение об ошибке на экране.Как мне зафиксировать ошибку, когда это происходит?

Ответы [ 3 ]

1 голос
/ 13 октября 2011

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

0 голосов
/ 18 апреля 2019

Лучшее, что я нашел для обработки этого случая, это поместить весь рендеринг в сабвуфер Render (который может включать %> с html) и использовать

On Error Resume Next

Render

If Err.number <> 0 Then
    ' Handle the error
    Response.Write "Error"
End If

При возникновении ошибкипри рендеринге подпрограмма Render немедленно прерывается, и вы можете обработать ошибку с любым произвольным кодом, в том числе с включенным.Так что это уже не главное решение, помещаемое только в одном месте, но для страниц, требующих этого трюка сброса, просто используйте еще один трюк для обработки своих ошибок.

Общий код страницы выглядит как

<%@  language="VBSCRIPT" codepage="65001" %>

' Do everything that does not need any Flush
...

' Now handle the hacky part

On Error Resume Next

Render

If Err.number <> 0 Then
    ' Handle the error
    Response.Write "Error"
End If

Sub Render

<%
<!-- your part of rendering which has to do flushes -->
...
%>

End Sub

0 голосов
/ 15 октября 2011

в IIS выберите свой виртуальный каталог или веб-сайт, затем в правой части раздела IIS вы увидите вариант ASP, выберите этот раздел ASP и нажмите кнопку «Открыть» в верхней правой части страницы. Затем в разделе «Свойства отладки» задайте значение true >> Отправить ошибку браузеру

Спасибо JJ

...