使用ASP.NET保护静态文件的困难

使用ASP.NET保护静态文件的困难,asp.net,asp.net-authorization,Asp.net,Asp.net Authorization,(根据Menno的反馈更新) 我请求使用ASP.NET授权来保护一个包含静态文件(htm、pdf等)的文件夹,该授权可保护站点的其余部分。该文件夹位于web的根目录中。正常的ASP.NET授权在web上运行良好。唯一的问题是保护此特定文件夹的安全 我正在尝试重新配置ASP.NET身份验证模块,以便使用应用程序根目录下的web.config中的以下命令为“Documentation”文件夹中的所有文件调用这些模块: <location path="Documentation">

(根据Menno的反馈更新)

我请求使用ASP.NET授权来保护一个包含静态文件(htm、pdf等)的文件夹,该授权可保护站点的其余部分。该文件夹位于web的根目录中。正常的ASP.NET授权在web上运行良好。唯一的问题是保护此特定文件夹的安全

我正在尝试重新配置ASP.NET身份验证模块,以便使用应用程序根目录下的web.config中的以下命令为“Documentation”文件夹中的所有文件调用这些模块:

<location path="Documentation">
    <system.webServer>
        <modules>
            <remove name="FormsAuthentication" />
            <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="" />
            <remove name="UrlAuthorization" />
            <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="" />
        </modules>
    </system.webServer>
</location>

没有效果

如果我将同一个system.webServer节点放在文档文件夹中的web.config中——没有效果

只有将同一个system.webServer节点放在Documentation文件夹的web.config中,然后将Documentation文件夹转换为应用程序时,它才会生效

我没有看到任何信息表明您可以在位置节点内成功使用system.webServer节点,但我也没有看到任何信息表明在位置节点内使用的内容有任何限制


应用程序池正在运行4.0集成模式。关于我做错了什么有什么建议吗?

您是在集成模式下运行应用程序池,还是在经典模式下运行?集成模式。我也更新了我原来的帖子来反映这一点。我刚刚在一个测试项目中试用了它,第一种方法对我来说很有魅力。它似乎也比选项2更优雅。您确定测试时没有查看可下载内容的缓存版本吗?无论如何,我建议再次研究选项1,因为1)根据我对IIS和ASP.NET如何工作的概念,它应该工作,2)对我来说,它确实工作。更多信息--我覆盖了“Documentation”文件夹中web.config中的模块,因为我不希望应用程序中的每个文件都受到保护。将此添加到我原来的帖子中。系统将忽略“Documentation”文件夹中的web.config。我现在正试图解决这个问题。您可以在根web.config中将授权模块设置为针对所有请求运行。仅仅运行这些模块并不会改变实际的读取权限。它只是强制ASP.NET也检查静态文件的权限。您仍在使用
元素保护文件本身。使用root web.config中的
块保护我通常喜欢的特定文件夹。将所有设置的权限都放在同一个位置会更整洁。