4

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

4

2 に答える 2

0

これを web.config ファイルに追加してみてください。

 <customErrors mode="On" defaultRedirect="appError.aspx">
          <error statusCode="403" redirect="appError.aspx"/>
          <error statusCode="404" redirect="appError.aspx"/>
        </customErrors>
于 2009-10-21T02:25:13.390 に答える
0

次の 2 つの方法で試すことができます。

  1. コードで設定できますResponse.TrySkipIisCustomErrors = true;
  2. 設定ファイルで次を設定できます。

<customErrors redirectMode="ResponseRewrite mode="On" defaultRedirect="appError.aspx" />

于 2009-10-21T19:10:14.247 に答える