具有身份验证的aspnet静态文件访问

时间:2012-08-15 16:45:06

标签: web-config static-files

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

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

我试图像这样添加一行

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

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

1 个答案:

答案 0 :(得分: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传递并进行身份验证。

在根网站.config文件中添加

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

然后你需要在IIS中执行一些操作。这些说明适用于IIS 6.0

  1. 打开IIS管理器
  2. 右键点击您的网站并选择属性
  3. 点击主页目录 - &gt;配置(显示应用程序扩展等)。您将需要来自asp.net已使用的映射扩展的路径。获得此功能的最佳方法是在列表中找到已映射的asp.net扩展名,如.aspx或.ascx,单击编辑并复制可执行文件路径。该路径应以aspnet_isapi.dll结尾。
  4. 点击添加
  5. 粘贴到上一个可执行文件路径和扩展名(在您的情况下为.html)。
  6. 对您希望由ASP.net运行时处理的任何其他文件类型重复此过程。