Pulling website information out of the IIS metabase
Pulling website information out of the IIS metabase
Someone recently asked me how to find the URL where the Tridion user interface is running. The idea was to automate the set-up for Tridion Site-Edit. The following snippet of code doesn't solve their problem, but for me it was a bit of fun exploring how to pull up this data out of the IIS metabase using C#. Although this blog entry is categorised as "Tridion", this code isn't particularly Tridion-specific. It's sufficient to show that it's not particularly painful to work with IIS programatically. You can also write to the metabase using similar techniques.
using System; using System.Collections.Generic; using System.Text; using System.DirectoryServices; namespace Hinttech.Dotnet.Samples.WebSiteDumper { class Program { static void Main( string[] args ) { using (DirectoryEntry webServers = new DirectoryEntry("IIS://localhost/W3SVC")) { foreach( DirectoryEntry server in webServers.Children) { PropertyValueCollection serverComment = server.Properties["ServerComment"]; if ( serverComment.Value != null && serverComment[0].ToString() == "Tridion Content Manager") { Console.WriteLine("The Tridion web site is running on: "); Console.WriteLine("==================================="); // If you want the https sites too, you need to do the same thing for "SecureBindings" foreach ( string serverBinding in server.Properties["ServerBindings"] ) { string[] serverBindingParts = serverBinding.Split(':'); string ipAddress = serverBindingParts[0]; string port = serverBindingParts[1]; string hostHeader = serverBindingParts[2]; if (string.IsNullOrEmpty(ipAddress)) { ipAddress="Default"; } Console.WriteLine( "\tIP Address = {0}\n\tPort= {1}\n\tHostHeader= {2}", ipAddress, port, hostHeader ); Console.WriteLine("==================================="); } server.Dispose(); break; } server.Dispose(); } } #if DEBUG Console.ReadKey(); #endif } } }