2

在我的应用程序文件夹中,我有虚拟应用程序 QA。有一个文件夹“帮助”,其中包含 html 和其他静态文件。QA 正在使用表单身份验证。

帮助文件夹中的所有文件无需身份验证即可访问(例如,www.mypage.com/QA/help/test.html)。我需要更改它,以便如果用户访问帮助文件夹中的文件(html 文件或任何其他静态文件),那么用户将重定向到登录页面。我在谷歌上搜索,我发现的唯一一件事是这是静态文件处理和映射到 asp 的东西。我正在使用 IIS 6。

我试图添加这样的行

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

到我的 web.config (在 QA 文件夹中),但它没有帮助。实际上,我不明白这一行,而且我是 web.config 文件管理的新手。我还尝试将帮助文件夹中的所有静态文件放入 QA 中,但它也无济于事。

4

1 回答 1

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. 右键单击您的网站并选择属性
  3. 单击主目录 -> 配置(显示应用程序扩展等)。您将需要来自已被 asp.net 使用的映射扩展的路径。最好的方法是在列表中找到一个已经映射的 asp.net 扩展,如 .aspx 或 .ascx,单击编辑并复制可执行文件路径。该路径应以 aspnet_isapi.dll 结尾。
  4. 点击添加
  5. 粘贴上一个可执行路径和扩展名(在您的情况下为 .html)。
  6. 对您希望由 ASP.net 运行时处理的任何其他文件类型重复此过程。
于 2012-08-15T17:21:25.370 回答