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 に開発サーバーの動作を複製させる方法はありますか?