我可以在web.config位置路径属性中使用通配符吗?

时间:2009-10-27 14:56:37

标签: authentication iis-7 web-config

在IIS 7中,我尝试拒绝所有用户访问扩展名为.xml的所有文件。

我在web.config文件中尝试了以下设置:

<location path="*.xml">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
</location>

但是获取任何文件都会导致内部服务器错误。

如果我拒绝访问单个文件,它会起作用,但是这个解决方案不会给我太多,因为我事先并不知道所有的.xml文件。

3 个答案:

答案 0 :(得分:8)

试试这个:

<configuration>
    <system.web>
        <httpHandlers>
            <add path="*.xml" verb="*" 
             type="System.Web.HttpNotFoundHandler" />
        </httpHandlers>
    </system.web>
</configuration>

顺便说一下,您可以将所有xml文件存储在App_Data目录中。在此目录中存储任何类型的文件都不会提供给Web。

答案 1 :(得分:5)

另一种方法是使用请求过滤器:

<system.webServer>
  <security>
    <requestFiltering>
      <fileExtensions>
        <add fileExtension=".xml" allowed="false" />
      </fileExtensions>
    </requestFiltering>
  </security>
</system.webServer>

答案 2 :(得分:0)

在寻找一种方法来更改对遗留应用程序(ASP.NET MVC)中的控制器中所有动作应用的安全性时,我偶然发现了这一点。我以为我需要某种通配符,但是只需提供包含控制器段的路径就足够了:

这允许匿名访问FooController中的所有操作。