2009-04-24 54 views
0

我需要設置IIS站點的身份驗證。我看到你可以做.GetLocationPaths()並返回一個位置的字符串數組。但我需要進入他們的孩子元素。IIS7以編程方式獲取位置節點

元素不嵌套在system.applicationHost或system.webServer元素中,因此無法使用config.getSection提取。

任何想法?

回答

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 
相關問題