我有一个C#Webform应用程序。
它里面包含一个Report文件夹,其中包含一些pdf文件。
我的应用程序会根据需要显示这些报告。
但我不希望有人通过输入直接网址
来访问这些内容例如:www.abc.com/Reports/a.pdf
我在报告文件夹中创建了以下Web.config:
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
但是,测试时我可以直接访问pdf文件。
同样根据业务规则,我无法使用表单身份验证。
答案 0 :(得分:3)
<system.web>
控制ASP.NET管道的配置,而不是IIS。如果您在IIS下运行,则不会为静态文件请求调用ASP.NET,例如您提到的PDF文件。
要拒绝这些请求,请改用<system.webServer>
。请参阅此质量检查:How to make IIS7 stop serving a folder?
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="My_Directory" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
请注意<system.webServer>
需要IIS7或更高版本(Windows Server 2008)。如果您运行的是IIS6(Windows Server 2003或Windows XP),那么这将无效。