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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Response.Flush()之后捕获500个错误相关的知识,希望对你有一定的参考价值。

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

答案

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

另一答案

我发现处理这种情况的最佳方法是将所有渲染放在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

另一答案

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

谢谢JJ

以上是关于在Response.Flush()之后捕获500个错误的主要内容,如果未能解决你的问题,请参考以下文章

求助个android 5.0+的捕获屏幕的问题

经典 ASP - 捕获 500 错误

Axios GET请求在我的本地版本上运行,但在Heroku上失败-未捕获(承诺)错误:请求失败,状态码为500

下载Word文档

500 错误“未捕获的错误:找不到类 '\XF\App'”

REST API 错误代码 500 处理