Share via


O Sistema de Configuração no IIS 7

de Walter Oliver

Visão geral

O IIS 7 apresenta um sistema de configuração totalmente novo, no centro de todos os novos recursos relacionados à administração. O sistema de configuração é baseado em arquivos XML distribuídos de texto não criptografado que contêm as configurações de toda a plataforma do servidor Web, inclusive o IIS, o ASP.NET e outros componentes, como o FTP 7.5. Como opção, eles podem ser definidos nos diretórios de conteúdo juntamente com o conteúdo da Web, se desbloqueados para esse nível. Observe que as definições de configuração do FTP 6.0 são armazenadas no MetaBase.

Diferentes níveis da hierarquia de configuração podem ser delegados pelo administrador do computador a outros usuários, como o proprietário do site ou o desenvolvedor de aplicativos. Proteger os padrões e o limite de bloqueio pronto para uso limita o acesso de gravação às configurações somente ao administrador do computador (as exceções são algumas configurações específicas do site, como DefaultDocument). No entanto, os recursos de bloqueio sofisticados e granulares permitem o desbloqueio seguro e a delegação do gerenciamento de configurações específicas para mais usuários, nos respectivos escopos do namespace da Web. O sistema é compatível com versões anteriores do IIS no nível da API (após a instalação da camada de compatibilidade do MetaBase).

No nível raiz (ou global), há dois arquivos separados:

  • system32\inetsrv\config\applicationHost.config: mantém os padrões globais para as configurações do IIS (servidor Web).
  • \Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config: mantém os padrões globais para as configurações do .NET Framework, incluindo algumas do ASP.NET (o restante das configurações fica no web.config na mesma pasta, que às vezes é chamada de web.config raiz).

O motivo pelo qual há dois arquivos separados ainda é porque as duas tecnologias têm uma versão diferente (em termos de agendamento e de produto). O IIS faz parte do Windows e o .NET Framework pode criar versões de maneira independente.

Nos diretórios de conteúdo da Web, pode haver arquivos web.config opcionais que controlam o comportamento para o nível da hierarquia e abaixo. Eles podem ser locais ou remotos (se o diretório de conteúdo estiver em um compartilhamento UNC, por exemplo). Eles podem conter o IIS, o ASP.NET ou qualquer outra configuração do .NET Framework que possa ser especificada no respectivo nível. Por padrão, não há nenhum arquivo web.config.

Hierarquia

Em termos de hierarquia de herança, o arquivo raiz é machine.config, depois, web.config no mesmo diretório (conhecido como web.config raiz), depois applicationHost.config e, em seguida, os arquivos web.config opcionais ao longo do namespace, conforme ilustrado no diagrama a seguir. Diagram showing the relationship between the files contained in the I I S 7 and Config Files namespaces.

Seções

Dentro de um arquivo de configuração, as definições são organizadas de forma estruturada, com base em uma unidade chamada "seção". A seção Configuração é um grupo de configurações logicamente relacionadas que podem ser implantadas como um todo ou cujo registro pode ser cancelado no sistema como um todo e normalmente são consumidas por um módulo de servidor.

Em outras palavras, quase todos os módulos de tempo de execução executados no processo de trabalho têm uma seção de configuração correspondente. A seção Configuração também é a unidade de extensibilidade: novas configurações são adicionadas ao esquema de configuração estendendo uma seção existente ou adicionando uma ou mais seções.

As seções são ainda agrupadas em coleções logicamente relacionadas, chamadas de "grupos de seções". Os grupos de seções não são a unidade de implantação, ou registro, ou qualquer outra operação substancial (por exemplo, bloqueio, criptografia). Eles não têm configurações neles. O objetivo deles é estruturar ainda mais a organização das configurações e evitar uma longa lista simples de seções de configuração. Eles são usados para criar a hierarquia de configurações, portanto, eles têm relações entre si (pai/filho).

Em outras palavras, os grupos de seções podem ser aninhados. Uma determinada seção sempre pertence a apenas um grupo de seções e não pode conter outra seção (ou grupos de seções). Um determinado grupo de seções pode pertencer a um grupo de seções pai e pode conter nenhum ou mais grupos de seções filhos. Ele normalmente contém mais de uma seção. Caso contrário, não há uma boa razão para que ele exista (no entanto, os clientes podem estender o esquema criando seus próprios grupos de seções que têm apenas uma seção, por algum motivo).

Este é um exemplo que demonstra seções e grupos de seções:

<!-- section group for web server configuration -->
<system.webServer>
  <!-- section group for web server security configuration -->
  <security>
    <!-- section group for web server authentication configuration -->
    <authentication>
      <!-- three sections for authentication -->
      <basicAuthentication ... />
      <windowsAutnentication ... />
      <anonymousAuthentication ... />
    </authentication>
  </security>
</system.webServer>

Cada seção tem um nome. O nome curto é o nome da seção em si e o nome longo é o nome completo, inclusive todos os grupos de seções relacionados. Por exemplo, o nome completo de "windowsAuthentication" é "system.webServer/security/authentication/windowsAuthentication". Essa organização hierárquica permite seções futuras (e grupos de seções) com o mesmo nome, mas em grupos de seções diferentes.

Cada nível do namespace de URL pode ter uma configuração associada. A configuração de determinado nível é herdada pelos níveis filho, a menos que especificamente substituída por um nível filho. Uma maneira simples de obter a configuração por URL é usando arquivos web.config nas pastas físicas do sistema de arquivos que são mapeadas para os caminhos virtuais. No nível da raiz (o nível do computador), arquivos separados devem ser usados, dependendo do grupo de seções da configuração (que será definido posteriormente no documento; no momento, considere-o como o nome do elemento XML que contém a configuração):

Grupo de seções Descrição Arquivo Raiz
system.applicationHost Sistema de Ativação do Windows: modelo de processo System32\inetsrv\config\applicationHost.config
system.webServer IIS: servidor Web System32\inetsrv\config\applicationHost.config
system.web ASP.NET Windows\microsoft.net\framework\v2.0.50727\config\web.config
Sistema.* Outro .NET framework Windows\microsoft.net\framework\v2.0.50727\config\machine.config
[Outro Microsoft] Outro Microsoft Windows\microsoft.net\framework\v2.0.50727\config\machine.config
[personalizado] Terceiros Machine.config, root web.config ou applicationHost.config, até terceiros/cliente

O formato de persistência da configuração é XML. Portanto, é útil descrever os mapeamentos entre as unidades organizacionais de configuração e a terminologia XML. Grupos de seções e seções são elementos XML. Dentro de uma seção, as configurações são organizadas em unidades menores que seguem de perto a terminologia XML:

Unidade de configuração Terminologia XML Descrição
Elemento de configuração Elemento XML Contém outras unidades filhas; não tem valor.
Coleção configuração Elemento XML Caso privado do elemento: contém um grupo de elementos na forma de adicionar/remover/limpar.
Propriedade da configuração Atributo XML Contém apenas um valor; não contém unidades filhas.

O sistema de configuração é baseado em um esquema declarativo, em sua essência. O esquema de configuração abrange vários arquivos, que residem em um local conhecido: system32\inetsrv\config\schema. Por padrão, somente os administradores de computador têm acesso a essa pasta. Os clientes ou terceiros podem adicionar arquivos de esquema para as seções personalizadas copiando-os nesse diretório. O sistema de configuração os capturará automaticamente quando for iniciado, no processo do chamador para a configuração. Se o sistema de configuração já estiver em execução, ele não detectará as alterações nos arquivos de esquema ou em novos arquivos.

Não edite o IIS ou outros arquivos de esquema instalados nesse diretório, pois erros podem resultar em esquema corrompido e incapacidade do servidor para iniciar.

Observação

Não há interface programática de alto nível para obter e definir arquivos de esquema, a não ser a API tradicional de acesso a arquivos e a análise/edição de XML. É sempre recomendável fazer backup de dados confidenciais, como a pasta de esquema, antes de fazer qualquer alteração nela.

Três arquivos compõem o esquema unificado da plataforma de servidor Web:

  • IIS_schema.xml: aborda as configurações e grupos de seções do Sistema de Ativação do Windows e do servidor Web do IIS.
  • ASPNET_schema.xml: abrange as configurações do ASP.NET no grupo de seções.
  • FX_schema.xml: aborda outras configurações do .NET Framework em vários grupos de seções.

Você também encontrará o FTP_schema.xml, se tiver o recurso FTP do IIS 7 instalado.