我的 中有以下内容web.config
<httpErrors errorMode="Custom">
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" prefixLanguageFilePath="" path="/error.asp" responseMode="ExecuteURL" />
</httpErrors>
错误处理正在工作,当发生 500 错误时,我被发送到我的 error.asp
而不是默认的 500 错误页面。问题是
ASPError
的所有属性都没有。 Server.GetLastError
返回的对象设置。例如,在下面的代码中,错误描述是
dim oErr : set oErr = Server.GetLastError
Response.Write "Error Description: " & oErr.Description& "<br />"
更新
基于 Joel 在评论中链接到的线程,我已将 web.config 更新为以下内容:
<httpErrors errorMode="Custom">
<remove statusCode="500" subStatusCode="100" />
<error statusCode="500" subStatusCode="100" prefixLanguageFilePath="" path="/error.asp" responseMode="ExecuteURL" />
</httpErrors>
此 在 GetLastError
返回的 ASPError 对象中给我数据.现在的问题是我从产生错误的页面的开头获取 HTML,然后页面的其余部分是来自
error.asp
的 HTML。 .我真的很想重定向到
error.asp
而是将 web.config 更改为 responseMode="Redirect"
似乎不起作用。
最佳答案
这是对我有用的解决方案。
设置 web.config 像这样:
<httpErrors errorMode="Custom">
<remove statusCode="500" subStatusCode="100" />
<error statusCode="500" subStatusCode="100" prefixLanguageFilePath="" path="/error.asp" responseMode="ExecuteURL" />
</httpErrors>
一个简单的 error.asp 可能看起来像这样:
<%@ Language=VBScript %>
<%
Option Explicit
On Error Resume Next
Response.Clear
Dim objError, MessageBody
Set objError = Server.GetLastError()
Response.Write objError.ASPCode & "<br />"
Response.Write objError.Number & "<br />"
Response.Write objError.Description & "<br />"
%>
我的问题的关键似乎是
On Error Resume Next
和 Response.Clear
.我在 Creating Custom ASP Error Pages 上找到了解决方案Microsoft 知识库文章 (Q224070)。
关于iis-7 - ASPError 对象在我的自定义错误页面上不包含任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4136006/