2

私のアプリケーション フォルダには、仮想アプリケーション QA があります。html やその他の静的ファイルを含む "help" フォルダーがあります。QA はフォーム認証を使用しています。

ヘルプ フォルダー内のすべてのファイルは、認証なしでアクセスできます (たとえば、www.mypage.com/QA/help/test.html)。ユーザーがヘルプ フォルダー内のファイル (html ファイルまたはその他の静的ファイル) にアクセスすると、ユーザーがログイン ページにリダイレクトされるように、これを変更する必要があります。私が見つけた唯一のことは、これが静的ファイル処理とaspへのマッピングを伴うものであることです。IIS6を使用しています。

このような行を追加しようとしました

< add name="StaticHandler" type="System.Web.StaticFileHandler" path="*.html" verb="*" validate="true" /> 

私のweb.config(QAフォルダーにあります)に追加しますが、役に立ちません。実際、私はこの行を理解していません。また、web.config ファイルの管理も初めてです。また、ヘルプ フォルダからすべての静的ファイルを QA に入れようとしましたが、これも役に立ちません。

4

1 に答える 1

2

匿名ユーザーから保護したい静的ファイルを含むディレクトリに構成ファイルを追加したことを確認してください (これは、保護しようとしているディレクトリに 2 つ目の web.config ファイルがあることを意味します)。これにより、匿名ユーザーが拒否されます (これが の動作です)。

<configuration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
</configuration>

IIS は、ASP.net パイプラインの外で静的ファイルを提供しています。追加した宣言を追加System.Web.StaticFileHandlerするだけでなく、IIS で拡張子をマップする必要があります。.htm または .html ファイルが ASP.net を通過して認証されるようにするため。

ルート web .config ファイルに追加します

<system.web>
   <httpHandlers>
      <add path="*.html" verb="*" type="System.Web.StaticFileHandler" />
   </httpHandlers>

次に、IIS でいくつかの操作を実行する必要があります。これらの指示は IIS 6.0 に適用されます

  1. IIS マネージャーを開く
  2. Web サイトを右クリックし、プロパティを選択します
  3. [ホーム ディレクトリ] -> [構成] をクリックします (アプリケーションの拡張機能などを表示します)。asp.net で既に使用されているマップされた拡張機能からのパスが必要になります。これを取得する最善の方法は、.aspx や .ascx などのリストで既にマップされている asp.net 拡張子を見つけ、[編集] をクリックして実行可能パスをコピーすることです。パスは aspnet_isapi.dll で終わる必要があります。
  4. [追加] をクリックします
  5. 前の実行可能パスと拡張子 (この場合は .html) を貼り付けます。
  6. ASP.net ランタイムで処理するその他のファイル タイプについて、このプロセスを繰り返します。
于 2012-08-15T17:21:25.370 に答える