2009-10-27 50 views
8

在IIS 7中,我尝试拒绝所有用户使用扩展名为.xml的所有文件。我可以在web.config位置路径属性中使用通配符吗?

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

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

但随后得到任何文件导致内部服务器错误。

它的工作原理是,如果我拒绝访问个别文件,但此解决方案不会购买我太多,因为我事先不知道所有.xml文件。

+0

的可能的复制[Web.config中:在位置和授权通配符(http://stackoverflow.com/questions/4375208/web-config-通配符在位和授权) – 2017-03-30 06:34:09

回答

8

试试这个:

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

通过,你可以或者所有的XML文件的存放目录App_Data内的方式。在此目录中存储任何类型的文件将不会提供给Web。

+0

谢谢App_Data是我将使用的。 – 2009-11-06 19:55:13

+0

可以在这里应用这种相同的方法:https://stackoverflow.com/questions/47096577/servicestack-api-documentation-in-swagger-ui-behind-the-closed-doors? – ShP 2017-11-03 15:47:22

5

的另一种方式是使用一个请求滤波器:

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