IIS7以编程方式获取位置节点

时间:2009-04-24 16:48:59

标签: iis-7

我需要设置IIS站点的身份验证。我看到你可以做.GetLocationPaths()并返回一个位置的字符串数组。但我需要深入了解他们的孩子元素。

<location>元素未嵌套在system.applicationHost或system.webServer元素中,因此无法使用config.getSection提取。

1 个答案:

答案 0 :(得分:1)

我最终在web.config

中放置了我需要的东西
Allow Anonymous Access
<authorization>
   <allow users="?" />
</authorization>

Disable Anonymous Access
<authorization>
   <deny users="?" />
</authorization>

然后我用我的应用程序更改了允许或拒绝。

Public Shared Function GetWebConfigFileName(ByVal sitePath As String) As String
    Return IO.Path.Combine(sitePath, "web.config")
End Function

Private Shared Function IIS7EnableActiveDir(ByVal sitepath As String, ByVal EnableAD As Boolean) As Boolean
    Using manager As New ServerManager

        For Each Site In manager.Sites

            If Not IsNothing(manager.Sites(Site.Name)) Then
                If Not IsNothing(manager.Sites(Site.Name).Applications.Item("/")) Then
                    For Each Application In manager.Sites(Site.Name).Applications
                        If Application.VirtualDirectories.Item(0).PhysicalPath.ToString.ToLower = sitepath.ToLower Then
                            If Not String.IsNullOrEmpty(sitepath) Then
                                Dim config As Xml.XmlDocument = New Xml.XmlDocument
                                config.Load(SettingsManager.GetWebConfigFileName(sitepath))
                                For Each node In config.SelectSingleNode("configuration/system.web/authorization")
                                    If TypeOf node Is Xml.XmlElement Then
                                        If EnableAD Then
                                            If node.Name = "allow" Then
                                                'Create new xml attribute
                                                Dim newElement As Xml.XmlElement = config.CreateElement("deny")
                                                Dim newElementAtt As Xml.XmlAttribute = config.CreateAttribute("users")
                                                newElementAtt.Value = "?"
                                                newElement.Attributes.Append(newElementAtt)
                                                config.SelectSingleNode("configuration/system.web/authorization").RemoveAll()
                                                config.SelectSingleNode("configuration/system.web/authorization").AppendChild(newElement)
                                                config.Save(SettingsManager.GetWebConfigFileName(sitepath))
                                                Return True
                                            End If
                                        Else
                                            If node.Name = "deny" Then
                                                'Create new xml attribute
                                                Dim newElement As Xml.XmlElement = config.CreateElement("allow")
                                                Dim newElementAtt As Xml.XmlAttribute = config.CreateAttribute("users")
                                                newElementAtt.Value = "?"
                                                newElement.Attributes.Append(newElementAtt)
                                                config.SelectSingleNode("configuration/system.web/authorization").RemoveAll()
                                                config.SelectSingleNode("configuration/system.web/authorization").AppendChild(newElement)
                                                config.Save(SettingsManager.GetWebConfigFileName(sitepath))
                                                Return True
                                            End If
                                        End If
                                    End If
                                Next
                            End If
                        End If
                    Next
                End If
            End If
        Next
    End Using
相关问题