public WebVirtualDirectory[] GetVirtualDirectories(string siteId) { if (!SiteExists(siteId)) { return new WebVirtualDirectory[] { } } ; using (var srvman = GetServerManager()) { var vdirs = new List <WebVirtualDirectory>(); var iisObject = srvman.Sites[siteId]; // foreach (var item in iisObject.Applications) { // Skip root application which is web site itself if (item.Path == "/") { continue; } // vdirs.Add(new WebVirtualDirectory { Name = ConfigurationUtility.GetNonQualifiedVirtualPath(item.Path), ContentPath = item.VirtualDirectories[0].PhysicalPath }); } // return(vdirs.ToArray()); } }
public WebAppVirtualDirectory[] GetZooApplications(ServerManager srvman, string siteId) { if (!SiteExists(srvman, siteId)) { return new WebAppVirtualDirectory[] { } } ; var vdirs = new List <WebAppVirtualDirectory>(); var iisObject = srvman.Sites[siteId]; // foreach (var item in iisObject.Applications) { Configuration cfg = item.GetWebConfiguration(); string location = siteId + ConfigurationUtility.GetQualifiedVirtualPath(item.Path); ConfigurationSection section; try { section = cfg.GetSection("system.webServer/heliconZoo", location); } catch (Exception) { // looks like Helicon Zoo is not installed, return empty array return(vdirs.ToArray()); } if (section.GetCollection().Count > 0) { WebAppVirtualDirectory vdir = new WebAppVirtualDirectory { Name = ConfigurationUtility.GetNonQualifiedVirtualPath(item.Path), ContentPath = item.VirtualDirectories[0].PhysicalPath }; ConfigurationElement zooAppElement = section.GetCollection()[0]; ConfigurationElementCollection envColl = zooAppElement.GetChildElement("environmentVariables").GetCollection(); foreach (ConfigurationElement env in envColl) { if ((string)env.GetAttributeValue("name") == "CONSOLE_URL") { vdir.ConsoleUrl = ConfigurationUtility.GetQualifiedVirtualPath(item.Path); if (!vdir.ConsoleUrl.EndsWith("/")) { vdir.ConsoleUrl += "/"; } vdir.ConsoleUrl += (string)env.GetAttributeValue("value"); } } vdirs.Add(vdir); } } return(vdirs.ToArray()); }
public void SetZooEnvironmentVariable(ServerManager srvman, string siteId, string appName, string envName, string envValue) { if (!SiteExists(srvman, siteId)) { return; } var iisObject = srvman.Sites[siteId]; // foreach (var item in iisObject.Applications) { if (appName == ConfigurationUtility.GetNonQualifiedVirtualPath(item.Path)) { Configuration cfg = item.GetWebConfiguration(); ConfigurationSection section = cfg.GetSection("system.webServer/heliconZoo"); ConfigurationElement zooAppElement = section.GetCollection()[0]; ConfigurationElementCollection envColl = zooAppElement.GetChildElement("environmentVariables").GetCollection(); //remove all CONSOLE_URLs for (int i = 0; i < envColl.Count;) { if (String.Compare(envColl[i].GetAttributeValue("name").ToString(), envName, StringComparison.OrdinalIgnoreCase) == 0) { envColl.RemoveAt(i); } else { ++i; } } // do not set empty value if (!string.IsNullOrEmpty(envValue)) { ConfigurationElement el = envColl.CreateElement(); el.SetAttributeValue("name", envName); el.SetAttributeValue("value", envValue); envColl.Add(el); } srvman.CommitChanges(); } } }
public WebVirtualDirectory[] GetVirtualDirectories(ServerManager srvman, string siteId) { if (!SiteExists(srvman, siteId)) { // if site does not exist return for add new directory return new WebVirtualDirectory[] { } } ; // Create site variable to work with Site iisSite = srvman.Sites[siteId]; // create variable for directory list var vdirs = new List <WebVirtualDirectory>(); // Make sure site ID exists if (iisSite != null) { // Grab site root Application not sub applications Application application = iisSite.Applications["/"]; if (application != null) { // Make sure we grab only virtual directories, Not apps foreach (VirtualDirectory directory in application.VirtualDirectories) { // Do not show Website it self as Virtual Directory if (directory.Path == "/") { continue; } // Grab directory Information vdirs.Add(new WebVirtualDirectory { Name = ConfigurationUtility.GetNonQualifiedVirtualPath(directory.Path), ContentPath = directory.PhysicalPath, }); } } } // Virtual directories collection ready for view return(vdirs.ToArray()); }