我正在使用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中,/ badur.aspx按预期工作,但/ badurl只会导致通用服务器生成的404页面。
任何想法导致差异的原因,以及我如何让IIS7复制开发服务器的行为?
答案 0 :(得分:0)
尝试将此添加到web.config文件中。
<customErrors mode="On" defaultRedirect="appError.aspx">
<error statusCode="403" redirect="appError.aspx"/>
<error statusCode="404" redirect="appError.aspx"/>
</customErrors>
答案 1 :(得分:0)
您可以尝试两种方式:
Response.TrySkipIisCustomErrors = true;
<customErrors redirectMode="ResponseRewrite mode="On" defaultRedirect="appError.aspx" />