IIS7:如何阻止访问与web.config文件?

我知道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>