2009-04-24 14 views
0

Ich muss die Authentifizierung einer IIS-Site festlegen. Ich sehe, dass Sie .GetLocationPaths() tun und ein String-Array der Standorte zurückgeben können. Aber ich muss in ihre Kindelemente einsteigen.IIS7 programmatisch Standortknoten erhalten

Die Elemente sind nicht in den system.applicationHost- oder system.webServer-Elementen verschachtelt und können daher nicht mit config.getSection extrahiert werden.

Irgendwelche Ideen?

Antwort

1

Ich landete platzieren, was ich in der web.config benötigt

Allow Anonymous Access 
<authorization> 
    <allow users="?" /> 
</authorization> 

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

ich dann änderte nur die mit meiner Anwendung erlauben oder zu verweigern.

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