IIS7 программно получает узлы местоположения - PullRequest
0 голосов
/ 24 апреля 2009

Мне нужно установить аутентификацию сайта IIS. Я вижу, что вы можете сделать .GetLocationPaths () и вернуть строковый массив местоположений. Но мне нужно проникнуть в их дочерние элементы.

Элементы <location> не вложены ни в элементы system.applicationHost, ни в system.webServer и поэтому не могут быть извлечены с помощью config.getSection.

1 Ответ

1 голос
/ 24 апреля 2009

Я закончил тем, что поместил то, что мне было нужно, в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...