4

IIS7.0でASP.NETMVCを使用しています。Application_Errorオーバーライドを介して404エラーが正常にフックされています。

「Controllers」、「Models」、「Helpers」などに加えて、ユーザーがアップロードしたファイルを保存するために使用する「Files」というディレクトリがあります。http://www.mysite.com/filesにアクセスすると、「Not Found」ではなく、デフォルトのIIS 403ページが表示され、情報が多すぎます(サーバーの正確なディレクトリ構造など)。

HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.

コードファイルを含む既存のディレクトリであるhttp://www.mysite.com/controllersまたはhttp://www.mysite.com/helpersにアクセスしようとすると、404ページが表示されます。これは私が望むものです。ユーザーに自分のディレクトリ構造について何も知られたくない。

MVCが/filesディレクトリを処理しないのはなぜですか?

4

1 に答える 1

2

私はこれを理解しました。Viewsディレクトリが適切な「404」ページを返していたのにFilesディレクトリが情報が多すぎるASP.NET「権限なし」ページを返していた理由:Viewsディレクトリにファイルの表示を禁止するweb.configファイルがあります。MVCがディレクトリを提供しないようにするための以下のスニペットがあります。

同様のweb.configファイルをFilesディレクトリに追加したところ、MVCはディレクトリが存在しないように動作するようになりました。これは、まさに私が望んでいることです。

    <httpHandlers>
      <add path="*" verb="*"
          type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
    </handlers>
  </system.webServer>
于 2009-12-09T22:51:35.963 に答える