1

重複の可能性:
iis 7.5 hijacking 404

IIS 7.5 で .net 4.0 サイトを実行しています。

カスタム エラー セクションを webconfig に追加しました。

<system.web>
    <customErrors defaultRedirect="/error" mode="On">
        <error statusCode="404" redirect="/error?code=404"/>
        <error statusCode="500" redirect="/error?code=500"/>
    </customErrors>
</system.web>

カスタムエラーは機能しています。内部サーバー エラーはすべて にリダイレクトされ/error?code=500throw new HttpException(404, "Not found")不足しているパラメータが見つかった場合は にリダイレクトされ/error?code=404ます。ただし、存在しない URL パスは、カスタム 404 ではなく、標準の IIS 404 ページをスローします。

ヒントはありますか?

4

2 に答える 2

2

それはIIS 7で一度私に起こりました。解決策はIIS-Applicationエラーページを構成することでした:

  • IIS を開く
  • アプリケーションを選択してください
  • IIS セクションでエラー ページを開く
  • [アクション] という名前の右側のパネルで、[機能設定の編集] をクリックします。
  • テストするには、次を選択します。
    • カスタム エラー ページ
  • 変更を受け入れる
  • IIS を再起動する

私の場合はそれでうまくいきました

編集 1

このcustomErrorsセクションは、ASP.Net によって処理される要求に対してのみ機能することに注意してください。HTMLページなどの静的要求は、IIS で構成された 404 エラー ページにリダイレクトされます。

ただし、独自の構成ファイルでこの動作をオーバーライドできます。

詳細については

<configuration>
  <system.webServer>
    <httpErrors existingResponse="Replace" errorMode="Custom">
      <remove statusCode="404"/>
      <error statusCode="404" path="GenericError.aspx" responseMode="Redirect"  />
    </httpErrors>
  </system.webServer>
</configuration>

上記のセクションを更新可能としてマークする必要がある場合もあります。

ファイルを開きます。

C:\Windows\System32\inetsrv\config\applicationHost.config

そして変更:

<section name="httpErrors" overrideModeDefault="Deny" />

に:

<section name="httpErrors" overrideModeDefault="Allow" />
于 2012-07-04T19:13:30.530 に答える
0

Global.asax または IHttpModule で処理できます。

Exception currentException = Server.GetLastError();
HttpException httpException = currentException as HttpException;
if (httpException != null && httpException.GetHttpCode() == 404)
{
    // redirect
}

ワイルドカード マッピングを設定する方法については、 http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-integrated-pipeline/を確認してください。これにより、すべての要求が asp.net によって処理されます。

于 2012-07-04T19:16:02.283 に答える