我正在使用Application_Error捕获一些旧版URL和URL快捷方式。在Global.vb中,我有以下代码:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim serverError = TryCast(Server.GetLastError(), HttpException)
If serverError IsNot Nothing Then
Dim errorCode As Integer = serverError.GetHttpCode()
If 404 = errorCode Then
' Do some custom processing here
End If
End If
End Sub
在web.config中,我这样做是为了确保所有请求(不仅仅是以.aspx结尾的请求)都由aspnet_isapi.dll处理,因此我可以对其进行处理:
<add name="ASP.NET-ISAPI-2.0-Wildcard" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
在我的开发箱上(使用Cassini),这在所有情况下都可以正常工作:/ badurl和/badurl.aspx均会引发Application_Error。
但是,在IIS7中,/ badurl.aspx可以按预期工作,但是/ badurl仅会导致由服务器生成的通用404页。
有什么想法会导致差异,以及如何使IIS7复制开发服务器的行为?
最佳答案
尝试将其添加到web.config文件。
<customErrors mode="On" defaultRedirect="appError.aspx">
<error statusCode="403" redirect="appError.aspx"/>
<error statusCode="404" redirect="appError.aspx"/>
</customErrors>