Hierarquia e Herança do Arquivo de Configuração do ASP.NET

Você pode distribuir arquivos de configuração do ASP.NET em toda os diretórios de aplicativos para configurar aplicativos ASP.NET em uma hierarquia de herança.Essa estrutura permite que você atingir o nível de detalhes de configuração que os aplicativos requerem nos níveis de diretórios apropriados sem afetar configurações em níveis superiores de diretório.

Este tópico contém as seções a seguir:

  • Estrutura de configuração

  • Configuração de herança

  • Escopo de configurações

  • Calculando definições de configuração em tempo de execução

  • Vários recursos ASP.NET configurados em um único arquivo

  • Conflitos entre configurações em caminhos virtuais e físicos

  • Restringir herança do ASP.NET

Estrutura de configuração

Arquivos de configuração do ASP.NET são chamados arquivos Web.config, e eles podem aparecer em vários diretórios nos aplicativos ASP.NET.A hierarquia de configuração ASP.NET tem as seguintes características:

  • Usa arquivos de configuração que aplicam-se aos recursos dentro do diretório no qual o arquivo de configuração é colocado e para todas as suas pastas filhas.

  • Permite que você coloque os dados de configuração em que ele terá o escopo apropriado: o computador inteiro, todos os aplicativos da Web, um aplicativo individual ou um subdiretório dentro do aplicativo.

  • Permite substituir as configurações que são herdadas de níveis superiores na hierarquia de configuração.Também permite bloquear as configurações para impedir que eles sejam substituídas pelas configurações de um nível inferior.

  • Organiza grupos lógicos de definições de configuração em seções.

Configuração de herança

Todos os aplicativos .NET estrutura herdam as definições de configuração básica e os padrões de um arquivo chamado raiz do sistema\Microsoft.NET\estrutura\ versionNumber \Config\computador.config.A computador. arquivo de configuração é usado para as configurações de todo o servidor.Algumas dessas configurações não podem ser substituídas em arquivos de configuração que estão mais baixo na hierarquia.

Os aplicativos do cliente .NET (console e aplicativos do Windows) usam arquivos de configuração chamados NomedoAplicativo.config para substituir as configurações herdadas.Os aplicativos ASP.NET usam arquivos de configuração denominados Web.config para substituir as configurações herdadas.

A raiz da hierarquia de configuração do ASP.NET é um arquivo conhecido como o arquivo Web.config raiz, e ele está localizado no mesmo diretório que o arquivo Machine.config.O arquivo Web.config de raiz herda todas as configurações do arquivo Machine.config.O arquivo Web.config raiz inclui configurações que se aplicam a todos os aplicativos ASP.NET que executarem uma versão específica do .NET Framework.Porque cada aplicativo ASP.NET herda configurações padrão do arquivo Web.config raiz, você precisará criar arquivos Web.config somente para as configurações que substituem as configurações padrão.

Herança em Elementos de Coleção

Alguns elementos de configuração são coleções como o elemento namespaces e o elemento ErrosPersonalizados.

Em coleções, definições de configuração são geralmente adicionadas a coleção via um elemento filho add,removido pelo nome da chave via um elemento filho remove, ou toda a coleção pode ser limpa por um elemento filho clear.Uma configuração adicional em um arquivo de configuração filho substitui uma configuração com o mesmo nome chave em um arquivo de configuração pai, a menos que duplicatas sejam permitidas.

Observação:

Algumas coleções que existiam em versões anteriores do .NET Framework usam um nome de elemento diferente de add.Por exemplo, o elemento ErrosPersonalizados usa um elemento filho error para adicionar erros personalizados à coleção.

Se uma solicitação for recebida para um arquivo no diretório SubDir1 que não existe, o ASP.NET começa a pesquisar a hierarquia de configuração, iniciando no máximo local arquivo Web.config (localizado no diretório atual, se ele existir, ou uma pasta pai).O ASP.NET está procurando por um elemento erro elemento customErrors (ASP.NET Settings Esquema) onde o atributo statusCode é igual a "404".Depois que o ASP.NET encontra a configuração para o erro 404, a URL no atributo redirect é retornado como a resposta.

Escopo de configurações

Há diferentes escopos para configurações — alguns têm um escopo global, algumas são efetivas somente para o escopo do aplicativo, o arquivo Web.config raiz ou o arquivo Machine.config.

O escopo de uma seção de configuração é definido no allowDefinition atributo das seção elemento para configSections (Geral Settings Esquema) elemento no computador. arquivo de configuração para todas as seções que estão incluídas no ASP.NET. Por exemplo, a Autenticação elemento (esquema configurações ASP.NET) elemento possui um allowDefinition atributo das MachineToApplication elemento. Isso significa que o elemento authentication pode ser definido no arquivo Machine.config, o arquivo Web.config raiz e um arquivo Web.config no nível do aplicativo.Se ela estiver definida no nível de subdiretório, um erro é acionado.Se não houver nenhum atributo allowDefinition definido para uma seção, então o valor padrão é Everywhere.

O escopo de uma configuração é listado para cada elemento em Definições de configuração ASP.NET e Configurações gerais (ASP.NET), na tabela Informações de Elementos próxima a Locais Configuráveis.

A tabela a seguir lista o nível no qual cada arquivo está localizado na hierarquia de configuração, o nome de arquivo e uma descrição das características de herança importantes de cada arquivo.

Nível de configuração

File name

Descrição do arquivo

Server

Machine.config

O arquivo Machine.config contém o esquema ASP.NET para todos os aplicativos Web no servidor.Este arquivo está na parte superior da hierarquia de configuração de mesclagem.

Web Raiz

Web.config

O arquivo web.config para o servidor é armazenado no mesmo diretório do arquivo Machine.config e contem valores padrão para a maioria das seções de configuração system.web.Em tempo de execução, esse arquivo será mesclado em segundo a partir da parte superior na hierarquia de configuração.

Site

Web.config

O arquivo Web.config para um site específico contém configurações que se aplicam ao site da Web e herdam para baixo através de todos os aplicativos ASP.NET e subdiretórios do site.

Diretório raiz do aplicativo ASP.NET

Web.config

O arquivo Web.config para um aplicativo ASP.NET específico está localizado no diretório raiz do aplicativo e contém configurações que se aplicam à aplicativos Web e herdam para baixo através de todas as subpastas em seu ramo.

Subpasta do aplicativo ASP.NET

Web.config

O arquivo Web.config para uma subpasta do aplicativo contém configurações que se aplicam a este subdiretório e herdam para baixo através de todas as subpastas em seu ramo.

Diretório de aplicativos cliente

NomeDoAplicativo.config

O arquivo NomeDoAplicativo.config contém configurações para um aplicativo cliente Windows (não um aplicativo da Web).

O elemento ProcessModel

Um elemento, o elemento processModel elemento (esquema configurações ASP.NET), configura o modelo de processamento usado para o servidor, incluindo todos os aplicativos ASP.NET que estão no servidor.Assim, configurações do processModel podem ser colocadas somente no arquivo Machine.config, e eles não podem ser substituídos pelas configurações de qualquer arquivo Web.config.

As alterações no elemento processModel terão efeito somente quando o processo do operador for reiniciado, não imediatamente após a configuração é alterada conforme outros elementos de configuração.

Observação:

Quando o ASP.NET está sendo executado em Serviços de Informações da Internet (IIS) 6.0 no modo de isolamento do processo do operador, o modelo de processo do IIS 6.0 é usado e as configurações na seção processModel do arquivo Machine.config são ignoradas.Para configurar a identidade do processo, ciclo processo ou outros valores de modelo processo, use o Gerenciador do IIS para configurar o processo do operador do IIS para o seu aplicativo.ASP.NET 2.0 não será executado quando você configurar o IIS 6.0 para executar ASP.NET no modo de isolamento do IIS 5.0.

Calculando definições de configuração em tempo de execução

Quando o servidor recebe uma solicitação para um determinado recurso da Web, o ASP.NET calcula as definições de configuração desse recurso hierarquicamente, usando todos os os arquivos de configuração localizados no caminho diretório virtual para o URL solicitada.As configurações locais substituem as configurações em arquivos de configuração pai.

Essas configurações são calculadas uma vez e, em seguida, armazenados em cache nas solicitações subsequentes.O ASP.NET automaticamente observa alterações de arquivo e recomputa o cache quando qualquer um dos arquivos de configuração é alterado dentro desse arquivo da hierarquia.Quando o servidor recebe uma solicitação para um determinado URL, o ASP.NET usa a hierarquia de definições de configuração no cache para localizar o recurso solicitado.

O aplicativo é reiniciado quando uma alteração de configuração é feita a menos que o elemento seção de configuração inclua um atributo restartOnExternalChanges="false", ou a configuração esteja contida em um arquivo separado vinculado ao arquivo Web.config usando um atributo configSource.

Vários recursos ASP.NET configurados em um único arquivo

Ao gerenciar um grande número de configurações ou sites da Web cliente em uma configuração de provedor de serviços de Internet, pode ser útil armazenar as configurações para vários locais em um arquivo Web.config.Usando o atributo path do elemento local, você pode configurar vários recursos específicos do ASP.NET armazenados em subdiretórios do aplicativo.

Para obter informações sobre como para usar o elemento local, consulte Como: Configurar diretórios específicos usando as definições de local.

Conflitos entre configurações em diretórios virtuais e físicos

Configurações para diretórios virtuais são independentes da estrutura de diretório físico, e diretórios virtuais devem ser organizados com cuidado para evitar problemas de configuração.Por exemplo, você poderia ter um arquivo do ASP.NET chamado MyResource.aspx com a estrutura física de diretório a seguir.

C:
    \Subdir1
        \Subdir2
            \MyResource.aspx

Além disso, você pode ter um arquivo de configuração que está localizado em Subdir1, um diretório virtual chamado Vdir1 que é mapeado para c:\Subdir1 e um diretório virtual chamado Vdir2 que é mapeado para c:\Subdir1\Subdir2.Se um cliente acessar o recurso com o local físico de c:\Subdir1\Subdir2\MyResource.aspx usando o URL https://localhost/vdir1/subdir2/MyResource.aspx, o recurso herda as configurações de configuração de Vdir1.No entanto, se o cliente acessar o mesmo recurso usando a URL https://localhost/vdir2/MyResource.aspx, ele não herda as configurações de Vdir1.Criar diretórios virtuais dessa maneira pode causar resultados inesperados, ou mesmo uma falha do aplicativo.É recomendável que você não aniner diretórios virtuais, ou se você fizer isso, use apenas um arquivo Web.config.

Restringir herança do ASP.NET

Convém restringir a herança de configurações para melhorar o desempenho do aplicativo, manter alta confiabilidade e simplificar a administração.As restrições são controladas por atributos allowOverride, lockAttributes, lockAllAttributesExcept, lockAllElementsExcept, lockItem e lockElements.Para obter mais informações sobre esses atributos, consulte Atributos de Geral herdados por elementos de seção.

Definições de configuração para exceções inesperadas

Durante a criação do aplicativo ASP.NET, as configurações contidas no arquivo Aspnet.config são processadas pela Common Language Runtime (CLR).Essas configurações, entre outros, instruem o CLR em como processar exceções não tratadas.A configuração em questão é da seguinte maneira:

<legacyUnhandledExceptionPolicy enabled="false" />

Para obter mais informações, consulte Exceções em threads gerenciados.

Consulte também

Tarefas

Como: Configurar diretórios específicos usando as definições de local

Como: bloquear ASP.NET configuração Settings

Referência

Atributos de Geral herdados por elementos de seção