示例#1
0
        public List <WebConfigEntry> BuildEntry(XElement element, string nodePath, string path)
        {
            var configEntries = new List <WebConfigEntry>();

            foreach (var property in element.Attributes())
            {
                var configEntry = new WebConfigEntry(element.Name.LocalName, nodePath, element.Attributes(), path);

                configEntries.Add(configEntry);
            }

            return(configEntries);
        }
        internal WebAuthenticationInformation(List <WebConfigEntry> configEntries)
        {
            bool isEnabled;

            if (!configEntries.Any())
            {
                throw new ArgumentException();
            }

            WebConfigEntry firstConfigEntry = configEntries.First();

            if (firstConfigEntry.SiteName == firstConfigEntry.Path)
            {
                _position = Position.WebSite;
            }
            else
            {
                _position = Position.WebApp;
            }


            foreach (var entry in configEntries)
            {
                if (entry.Filter.StartsWith("/system.webServer/security/authentication/"))                  //TODO move this so auth config is divided earlier in the process
                {
                    string attributeName = entry.Name.Replace("Authentication", "");
                    attributeName = attributeName.Substring(0, 1).ToUpper() + attributeName.Substring(1);

                    if (bool.TryParse(entry.Attributes.FirstOrDefault(a => a.Name == "enabled")?.Value, out isEnabled))
                    {
                        AddAttribute(attributeName, isEnabled);
                    }
                }
            }

            //Anonymous = $true
            //Basic = $true
            //Digest = $true
            //Windows = $true
        }