Usar o Editor de Configuração: gerar scripts
por Crystal Hoyer
Este passo a passo tem como objetivo demonstrar como usar a funcionalidade Gerar Script do Editor de Configuração por meio do exemplo de geração do pool de aplicativos.
Este passo a passo requer os seguintes pré-requisitos:
Inicie o Editor de Configuração no Gerenciador do IIS clicando duas vezes no recurso "Editor de Configuração" de uma conexão de servidor.
Na Seção: menu suspenso clique em system.applicationHost –> applicationPools
Na grade de propriedades exibida abaixo, clique na elipse "..." na primeira linha, que corresponde ao item (coleção).
No editor de coleção, você verá uma lista dos pools de aplicativos que já existem.
No painel de ações, clique em "Adicionar"
Preencha a grade de propriedades exibida na seção Propriedades.
- Observe que a propriedade "name" tem uma chave no símbolo. Isso indica um campo obrigatório. Insira "applicationPool1" como seu nome para criar um novo pool de aplicativos.
- Selecione processModel para expandir.
- Definir userName como "PoolId1"
- Definir senha como "PoolId1Pwd"
- Alterar identityType para "SpecificUser"
- Opcionalmente, você pode alterar outras configurações aqui
[opcional] Para confirmar as alterações no sistema de configuração, clique em Aplicar no painel Ações. No entanto, para fins do nosso passo a passo, não faça isso.
Depois de fechar a caixa de diálogo de propriedades, clique no link Gerar script no painel Ações. As três guias da caixa de diálogo Script exibem três tipos de scripts para realizar as ações que fizemos nesta seção.
using System;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
ServerManager serverManager = new ServerManager();
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
addElement["name"] = @"applicationPool1";
ConfigurationElement processModelElement = addElement.ChildElements["processModel"];
processModelElement["identityType"] = @"SpecificUser";
processModelElement["userName"] = @"PoolId1";
processModelElement["password"] = @"PoolId1Pwd";
applicationPoolsCollection.Add(addElement);
serverManager.CommitChanges();
}
}
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;
var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "applicationPool1";
var processModelElement = addElement.ChildElements.Item("processModel");
processModelElement.Properties.Item("identityType").Value = "SpecificUser";
processModelElement.Properties.Item("userName").Value = "PoolId1";
processModelElement.Properties.Item("password").Value = "PoolId1Pwd";
applicationPoolsCollection.AddElement(addElement);
adminManager.CommitChanges();
appcmd.exe set config -section:system.applicationHost/applicationPools /+".[name='applicationPool1']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /.[name='applicationPool1'].processModel.identityType:"SpecificUser" /.[name='applicationPool1'].processModel.userName:"PoolId1" /.[name='applicationPool1'].processModel.password:"PoolId1Pwd" /commit:apphost
Com base no código gerado pelo Editor de Configuração, refatoraremos o código para criar um pool de aplicativos para o método "CreateApplicationPool". O arquivo final fica assim:
using System;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
ServerManager serverManager = new ServerManager();
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
for (int i = 0; i < 10; i++) {
CreateApplicationPool(applicationPoolsCollection,
"AppPool" + i.ToString(),
"AppPoolId" + i.ToString(),
"AppPoolPwd" + i.ToString());
}
serverManager.CommitChanges();
}
private static void CreateApplicationPool(ConfigurationSection applicationPoolsSection,
string appPoolName,
string appPoolUserName,
string appPoolPassword)
{
ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
addElement["name"] = appPoolName;
ConfigurationElement processModelElement = addElement.ChildElements["processModel"];
processModelElement["identityType"] = @"SpecificUser";
processModelElement["userName"] = appPoolUserName;
processModelElement["password"] = appPoolPassword;
applicationPoolsCollection.Add(addElement);
}
}
Agora você criou código para criar 10 pools de aplicativos com a ajuda do Editor de Configuração.