コード例 #1
0
ファイル: FlubuRunner.cs プロジェクト: mohanak12/projectpilot
        public TRunner GetLocalIisVersionTask()
        {
            GetLocalIisVersionTask task = new GetLocalIisVersionTask();

            return(RunTask(task));
        }
コード例 #2
0
        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();
            }
        }