Joel Spolsky Asked: 2009-07-09 08:01:55 +0800 CST2009-07-09 08:01:55 +0800 CST 2009-07-09 08:01:55 +0800 CST 使用 Web.config 阻止对子目录的访问 772 我的 ASP.NET 项目中有一个包含实用程序文件的子目录。代码在运行时需要它们,但我不希望它们在网络上可见。 Web.config 文件中阻止所有用户访问单个子目录及其所有内容的语法是什么? asp.net iis-7 4 个回答 Voted Best Answer MattB 2009-07-09T08:28:25+08:002009-07-09T08:28:25+08:00 IIS 7 有一个新的“请求过滤”功能。您可能想使用隐藏段配置: <configuration> <system.webServer> <security> <requestFiltering> <hiddenSegments> <add segment="BIN"/> </hiddenSegments> </requestFiltering> </security> </system.webServer> </configuration> 这会导致http://yoursite/bin无法使用(但http://yoursite/binary仍然有效) 查看: http ://learn.iis.net/page.aspx/143/how-to-use-request-filtering John Rennie 2009-07-09T08:19:39+08:002009-07-09T08:19:39+08:00 您的问题是,如果 IIS 只是简单地返回文件 ASP.Net 将永远不会有机会干涉。我相信这可以通过启用基于表单的身份验证和相当多的混乱来完成,但我只是将文件移到 wwwroot 文件夹之外。 JR John Rasch 2009-07-09T08:23:20+08:002009-07-09T08:23:20+08:00 这应该有效: <configuration> <location path="FolderName"> <system.web> <authorization> <deny users="*"/> </authorization> </system.web> </location> </configuration> Ryan Teh 2020-11-23T23:57:28+08:002020-11-23T23:57:28+08:00 MattB 的解决方案会起作用,但是如果您在其他子目录中具有相同的文件夹名称,则这些子目录将不起作用。 您可以尝试以下方法。 <?xml version="1.0" encoding="utf-8"?> <configuration> <!-- Make sure this directory cannot be served. --> <location path="Plugins"> <!-- Change this to your path --> <system.webServer> <handlers> <add name="DisallowServe" path="*.*" verb="*" type="System.Web.HttpNotFoundHandler" /> <!-- Return 404 instead of 403 --> </handlers> </system.webServer> </location> </configuration>
IIS 7 有一个新的“请求过滤”功能。您可能想使用隐藏段配置:
这会导致http://yoursite/bin无法使用(但http://yoursite/binary仍然有效)
查看: http ://learn.iis.net/page.aspx/143/how-to-use-request-filtering
您的问题是,如果 IIS 只是简单地返回文件 ASP.Net 将永远不会有机会干涉。我相信这可以通过启用基于表单的身份验证和相当多的混乱来完成,但我只是将文件移到 wwwroot 文件夹之外。
JR
这应该有效:
MattB 的解决方案会起作用,但是如果您在其他子目录中具有相同的文件夹名称,则这些子目录将不起作用。
您可以尝试以下方法。