我需要设置IIS站点的身份验证。我看到你可以做.GetLocationPaths()并返回一个位置的字符串数组。但我需要深入了解他们的孩子元素。
<location>
元素未嵌套在system.applicationHost或system.webServer元素中,因此无法使用config.getSection提取。
答案 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