Esempio n. 1
0
        public static DirectoryEntry CreateIsapiFilter(string parent, string localPath, string filterName, out bool created)
        {
            created = false;
            DirectoryEntry directoryEntry = null;
            DirectoryEntry result;

            try
            {
                bool flag;
                using (DirectoryEntry directoryEntry2 = IisUtility.FindOrCreateWebObject(parent, "Filters", "IIsFilters", out flag))
                {
                    if (flag)
                    {
                        directoryEntry2.CommitChanges();
                        IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(IisUtility.WebSiteFromMetabasePath(directoryEntry2.Path)));
                    }
                    directoryEntry = IisUtility.FindOrCreateWebObject(directoryEntry2.Path, filterName, "IIsFilter", out flag);
                    if (flag || (directoryEntry.Properties["FilterPath"].Value is string && (string)directoryEntry.Properties["FilterPath"].Value != localPath))
                    {
                        directoryEntry.Properties["FilterPath"].Value = localPath;
                        flag = true;
                    }
                    string text = (string)directoryEntry2.Properties["FilterLoadOrder"].Value;
                    if (text == null || text.Length == 0)
                    {
                        directoryEntry2.Properties["FilterLoadOrder"].Value = filterName;
                    }
                    else if (!IsapiFilter.IsFilterInLoadOrder(text, filterName))
                    {
                        StringBuilder stringBuilder = new StringBuilder(text);
                        stringBuilder.Append(",");
                        stringBuilder.Append(filterName);
                        directoryEntry2.Properties["FilterLoadOrder"].Value = stringBuilder.ToString();
                    }
                    directoryEntry2.CommitChanges();
                    IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(IisUtility.WebSiteFromMetabasePath(directoryEntry2.Path)));
                    created = flag;
                    result  = directoryEntry;
                }
            }
            catch (Exception)
            {
                if (directoryEntry != null)
                {
                    directoryEntry.Close();
                }
                throw;
            }
            return(result);
        }