web-dev-qa-db-ja.com

Web.Configでディレクトリ参照を無効にする方法

Webサイトがあり、Deny Directory Browserfromweb.config file

ここで私が使用しているコードはROOTに配置されています。動作しません。私はそれをローカルでテストしているので、URL LIKE http:// localhost:3214 / を使用して、CMSからディレクトリを参照できます。

  • 私は何を間違っていますか?
  • ローカルマシンでも機能する必要がありますか?

ご協力ありがとうございました!

<configuration>
  <location path="Cms">
    <system.webServer>
      <directoryBrowse enabled="false" />
    </system.webServer>
  </location>
</configuration>

いくつかのリソース:

http://blogs.iis.net/bills/archive/2008/03/24/how-to-enable-directory-browsing-with-iis7-web-config.aspx

http://www.expta.com/2008/03/configuring-virtual-directories-with.html

22
GibboK

まず、すべてが<location>ブロックで機能するわけではありません。

<system.webServer><location>でサポートされていないという肯定的な声明は見つかりませんが、許可されていると示唆されているケースは見つかりません。これの証拠は(グローバル)machine.configにあり、system.webserverセクションはIgnoreSectionハンドラーを使用するように定義されています。標準のSystem.Configuration実装では処理されず、<location>のサポートを提供するのは、構成処理の標準実装です。

Cms要素を含むdirectoryBrowseフォルダーにweb.configを追加して、閲覧がブロックされていることを確認してください。

7
Richard

ギボック、ここでは何も問題はありません。慌てる必要はありません:)

Visual Studio内の組み込みサーバーからWebサイトを閲覧していると仮定すると、これは通常のケースです。

上記のコードを使用してIISに移動した場合、ディレクトリの参照は意図したとおりに動作するはずです。

試してみて、このWebサイトをIISでホストし、何が起こったのか教えてください、ありがとう。

5

私は同じコードを試していました。あなたが持っているものは実際には正しいです。これが reference です。

もちろん、私にとってはうまくいかなかったし、理由を理解することもできなかった。リチャードの投稿を読んで、誰かがそのディレクトリにweb.configファイルを置いたことを思い出すまでは。このファイルは、メインのweb.configファイルの動作を上書きします。サブディレクトリweb.configで、directoryBrowseオプションが明示的にオンになりました(他のハンドラーもたくさんありますね!)。そのファイルを削除すれば、上記のものは私にとってはうまくいきます。それは実際にリクエストを次のハンドラに渡します。それはまさに私が欲しかったものです。

私はローカルマシンでIIS 7を使用しています。

0

<directoryBrowse>ディレクティブは、httpプロトコルのみを介してディレクトリのリストを制御します。 http://msdn.Microsoft.com/en-us/library/ms691327%28v=vs.90%29.aspx =

他の(または独自の)アプリケーション内からディレクトリにアクセスしようとしても、コードには影響しません。

@編集:編集後、私があなたを正しく理解した場合-私は、Deny Directory Browserの意味は意図した機能です:の内容を表示しますブラウザを使用して指定されたパス内のディレクトリ。そして、はい、それはおそらくローカル開発サーバーでは動作しません。 IIでお試しください!

0
user492238