我知道IIS7允许我使用web.config xml文件进行每个目录的configuration。 我有一个目录,一些configuration文件不想被networking访问。 本地web.config文件禁止读取访问将是一个很好的解决scheme。
什么应该是一个web.config文件的内容禁止networking访问的文件?
编辑:我试图把一个web.config文件与这些内容在一个文件中:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <authorization> <deny users="*" /> <!-- Denies all users --> </authorization> </system.web> </configuration>
但是我仍然可以直接访问目录中的文件。 它出什么问题了? 我如何debugging发生了什么?
你正在使用system.web。 在IIS7中,您应该使用system.webServer。 这将阻止所有types的文件,而不仅仅是ASP.NET文件。 例如,你可以密码保护JPG,GIF,TXT和所有types的文件。
它看起来像这样:
<system.webServer> <security> <authorization> <remove users="*" roles="" verbs="" /> <add accessType="Allow" roles="Administrators" /> </authorization> </security> </system.webServer>
如果你想只为1个文件设置它:
<location path="dontlook.jpg"> <system.webServer> <security> <authorization> <remove users="*" roles="" verbs="" /> <add accessType="Allow" roles="Administrators" /> </authorization> </security> </system.webServer> </location>
我认为这可以解决你的问题。
将此web.config放置在包含目标目录的目录中:
<configuration> <system.webServer> <security> <requestFiltering> <hiddenSegments> <add segment="target directory name"/> </hiddenSegments> </requestFiltering> </security> </system.webServer> </configuration>
您可以使用Web.config上的位置节点。 这里是msdn的详细解释。 简而言之:
<location path="Subdirectory"> <system.web> <authorization> <deny users="*"/> <!-- Denies all users --> </authorization> </system.web> </location> <location path="Public_Directory"> <system.web> <authorization> <allow users="*"/> <!-- Allows all users --> </authorization> </system.web> </location>
你也可以使用? 通配符来指定您应该(允许/拒绝)匿名用户
*表示每个login用户。 ? 意味着匿名用户。 你必须使用? 。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </configuration>