我从昨天开始就一直在努力解决这个问题。
我有一个网站(框架 4.0),托管在装有 IIS 7.5 的 Windows Server 中经典模式。不幸的是,我无法将其更改为集成模式。
我需要保护文件夹中包含的文件。
只有经过身份验证的用户(使用表单身份验证)才可以访问它们。匿名用户则不能。
我尝试在 webconfig 中以这种方式保护文件夹:
<location path="Riservata/Files">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
但我仍然可以直接访问这些文件。
有人能帮助我吗?
答案1
对于未来的用户:我通过在 IIS 7.5 上编写通配符解决了这个问题。IIS 在我想要保护的文件夹上自动写入了一个新的 web.config:
<configuration>
<system.webServer>
<handlers>
<add name="Proteggi_File_WildCard" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
</handlers>
</system.webServer>
</configuration>
此代码激活 ISAPI 模块并将所有调用(“*”)带至 ASP NET 管道,因此如果用户未通过表单身份验证进行身份验证,则会重定向到登录页面。