在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个错误的主要内容,如果未能解决你的问题,请参考以下文章