allanweber
5/7/2013 - 11:10 PM

Configurar IIS via código

Configurar IIS via código

private void CreateSite()
        {
            string nameAppPoll = string.Empty;
            ServerManager manager = new ServerManager();
 
            try
            {
                nameAppPoll = txtNomeSite.Text + "AppPool";
 
                //Cria Pool de conexão
                CreatAppPool(nameAppPoll);
 
                //Remove Site se já existir
                using (ServerManager serverManager = new ServerManager())
                {
                    Site site = serverManager.Sites["Default Web Site"];
                    Microsoft.Web.Administration.Application application = site.Applications["/" + txtNomeSite.Text];
                    if (application != null)
                    {
                        site.Applications.Remove(application);
                        serverManager.CommitChanges();
                    }
                }
 
                Site defaultSite = manager.Sites["Default Web Site"];
               ApplicationDefaults defaultVals = defaultSite.ApplicationDefaults;
 
                // Set the application defaults.
                defaultVals.ApplicationPoolName = nameAppPoll;
                //defaultVals.EnabledProtocols = "http";
 
                manager.VirtualDirectoryDefaults.UserName = txtUsuario.Text;
                manager.VirtualDirectoryDefaults.Password = txtSenha.Text;
 
                // Create a new application.
                defaultSite.Applications.Add("/" + txtNomeSite.Text, txtPathOrigem.Text);
                manager.CommitChanges();
 
                // Read the application's values.
                //Microsoft.Web.Administration.Application discussion = defaultSite.Applications["/" + txtNomeSite.Text];
 
                //Recyciling an Application Pool
                manager.ApplicationPools[nameAppPoll].Recycle();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Sispro - CreateSite.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 
        private void CreatAppPool(string nameAppPoll)
        {
            try
            {
                ServerManager mgr = new ServerManager();
                ApplicationPool myAppPool;
 
                //Remove AppPool se já existir
                foreach (ApplicationPool applicationPool in mgr.ApplicationPools)
                {
                    if (applicationPool.Name.ToLower().Equals(nameAppPoll.ToLower()))
                    {
                        mgr.ApplicationPools.Remove(applicationPool);
                        mgr.CommitChanges();
                        break;
                    }
                }
 
                // Add a new application pool called MyAppPool
                myAppPool = mgr.ApplicationPools.Add(nameAppPoll);
 
                // Configure my new app pool to start automatically.
                myAppPool.AutoStart = true;
 
                // What action should IIS take when my app pool exceeds
                // the CPU limit specified by the Limit property
                myAppPool.Cpu.Action = ProcessorAction.NoAction;
 
                // Use the Integrated Pipeline mode
                myAppPool.ManagedPipelineMode = ManagedPipelineMode.Classic;
 
                //Habilitar Aplicativos de 32 bits
                myAppPool.Enable32BitAppOnWin64 = true;
 
                // Set the runtime version of ASP.NET to 4.0
                myAppPool.ManagedRuntimeVersion = "v4.0";
 
                // Use the Network Service account
                myAppPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
 
                myAppPool.ProcessModel.UserName = txtUsuario.Text;
                myAppPool.ProcessModel.Password = txtSenha.Text;
 
                // Shut down after being idle for 5 minutes.
                myAppPool.ProcessModel.IdleTimeout = TimeSpan.FromMinutes(5);
 
                // Max. number of IIS worker processes (W3WP.EXE)
                myAppPool.ProcessModel.MaxProcesses = 1;
 
                // Commit the changes
                mgr.CommitChanges();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Sispro - CreatAppPool.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }