在Response.Flush()之后捕获500个错误

时间:2011-10-13 07:19:43

标签: iis iis-7 asp-classic

将数据刷新到页面后,如果在将来的进程中生成错误,则会在浏览器中写入错误消息,而不是在页面上生成整个500错误。如何在调用Response.Flush()后捕获写入页面的错误? Send Errors to Browser设置为=,但错误不会触发500错误页面,而只是触发屏幕上的错误消息。发生这种情况时如何捕获错误?

3 个答案:

答案 0 :(得分:1)

一旦调用了Response.Flush(),响应标头和当时响应缓冲区中的所有内容都将发送到浏览器。 HTTP状态代码位于响应的第一行,因此在发送标头后不能再更改。

答案 1 :(得分:0)

对于这种情况,我发现最好的方法是将所有渲染都放在Render子(可以包含%>和html)中,并使用

On Error Resume Next

Render

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

当渲染中发生错误时,Render子项将立即中断,您可以使用所需的任何自定义代码(包括来自include的代码)来处理错误。因此,这不再是将所有解决方案仅放在一个地方的全部解决方案,而是对于需要该冲洗技巧的页面,只需使用另一个技巧来处理其错误。

整个页面代码看起来像

<%@  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

答案 2 :(得分:-1)

在IIS中选择您的虚拟目录或网站然后在IIS部分的右侧部分,您可以看到ASP选项选择此ASP部分并单击页面右上角的打开功能。 然后在调试属性下设置true&gt;&gt;将错误发送到浏览器

由于 JJ

相关问题