使用Microsoft.Web.Administration API检索“system.webServer / security / authorization”配置

时间:2010-09-06 17:26:28

标签: asp.net security iis-7

我正在尝试使用Microsoft.Web.Administration API访问“system.webServer / security / authorization”部分(在当前请求路径中),以查看匿名用户(“*”)是否可以访问。 / p>

要做到这一点,我试图通过以下方式访问部分配置:

WebConfigurationManager.GetSection(HttpContext.Current, "system.webServer/security/authorization")

我在web.config限制对特定角色的访问的路径上尝试了这个,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <security>
           <authorization>
                <remove users="*" roles="" verbs="" />
                <add accessType="Allow" roles="MyRole" />
           </authorization>
        </security>
    </system.webServer>
</configuration>

令我惊讶的是,返回的对象是一个没有ChildElements的ConfigurationSection实例。

为什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

在C:\ Windows \ System32 \ inetsrv \ config \ schema \ IIS_schema.xml中查看配置架构后,我发现授权元素下的元素实际上是一个集合。

这意味着要获取集合元素,我必须使用GetCollection()方法而不是访问ChildElements属性:

     WebConfigurationManager.GetSection("system.webServer/security/authorization", HttpContext.Current.Request.Path).GetCollection()