public TRunner GetLocalIisVersionTask() { GetLocalIisVersionTask task = new GetLocalIisVersionTask(); return(RunTask(task)); }
protected override void DoExecute(IScriptExecutionEnvironment environment) { string version = GetLocalIisVersionTask.GetIisVersion(environment, false); int major = GetLocalIisVersionTask.GetMajorVersion(version); if (major < 6 || major == 0) { environment.LogMessage("IIS does not support application pools."); return; } const string AppPoolsRootName = @"IIS://localhost/W3SVC/AppPools"; using (DirectoryEntry parent = new DirectoryEntry(AppPoolsRootName)) { DirectoryEntry applicationPoolEntry = null; try { // first check if the user already exists try { applicationPoolEntry = parent.Children.Find(applicationPoolName, "IIsApplicationPool"); // application pool already exists if (mode == CreateApplicationPoolMode.DoNothingIfExists) { environment.LogMessage( String.Format( System.Globalization.CultureInfo.InvariantCulture, "Application pool '{0}' already exists, doing nothing.", applicationPoolName)); return; } else if (mode == CreateApplicationPoolMode.FailIfAlreadyExists) { throw new RunnerFailedException( String.Format( System.Globalization.CultureInfo.InvariantCulture, "Application '{0}' already exists.", applicationPoolName)); } // otherwise we should update the existing application pool } catch (DirectoryNotFoundException) { // application pool does not exist, go on and add it applicationPoolEntry = parent.Children.Add(applicationPoolName, "IIsApplicationPool"); } if (major > 6) { applicationPoolEntry.InvokeSet( "ManagedPipelineMode", new object[] { classicManagedPipelineMode ? 1 : 0 }); } applicationPoolEntry.CommitChanges(); } finally { if (applicationPoolEntry != null) { applicationPoolEntry.Dispose(); } } parent.CommitChanges(); } }