我正在使用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>

10-07 17:47