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);
}
}