Partilhar via


arquivo web.config

Observação

Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.

Advertência

Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 10 deste artigo.

O web.config é um ficheiro que é lido pelo IIS e pelo Módulo ASP.NET Core para configurar uma app alojada no IIS.

web.config localização do ficheiro

Para configurar corretamente o ASP.NET Módulo Core , o web.config ficheiro deve estar presente no caminho raiz do conteúdo (tipicamente o caminho da base da aplicação) da aplicação implementada. Este é o mesmo local do percurso físico do site fornecido ao IIS. O web.config ficheiro é necessário na raiz da aplicação para permitir a publicação de múltiplas aplicações usando o Web Deploy.

Ficheiros confidenciais estão no caminho físico da aplicação, como {ASSEMBLY}.runtimeconfig.json, {ASSEMBLY}.xml, e {ASSEMBLY}.deps.json (comentários na Documentação XML), onde o marcador {ASSEMBLY} é o nome da assembly. Quando o web.config ficheiro está presente e o site começa normalmente, o IIS não fornece estes ficheiros sensíveis se forem solicitados. Se o web.config ficheiro estiver em falta, tiver um nome incorreto ou não for possível configurar o site para arranque normal, o IIS pode servir ficheiros sensíveis publicamente.

O web.config ficheiro deve estar presente na implementação em todos os momentos, com o nome correto e capaz de configurar o site para arranque normal. Nunca remova o web.config ficheiro de uma implementação em produção.

Se um web.config ficheiro não estiver presente no projeto, o ficheiro é criado com os processPath e arguments corretos para configurar o Módulo do ASP.NET Core e é movido para a saída publicada.

Se um web.config ficheiro estiver presente no projeto, o ficheiro é transformado com o correto processPath e arguments para configurar o Módulo do ASP.NET Core e é movido para a saída publicada. A transformação não modifica as definições de configuração do IIS no ficheiro.

O web.config ficheiro pode fornecer definições adicionais de configuração IIS que controlam módulos IIS ativos. Para informações sobre módulos IIS capazes de processar pedidos com ASP.NET aplicações Core, consulte o tópico dos módulos IIS .

A criação, transformação e publicação do web.config ficheiro são tratadas por um target do MSBuild (_TransformWebConfig) quando o projeto é publicado. Este alvo está presente nos alvos Web SDK (Microsoft.NET.Sdk.Web). O SDK está definido no topo do ficheiro do projeto:

<Project Sdk="Microsoft.NET.Sdk.Web">

Para evitar que o Web SDK transforme o web.config ficheiro, use a <IsTransformWebConfigDisabled> propriedade no ficheiro do projeto:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

Ao desativar o Web SDK de transformar o ficheiro, o processPath e arguments deve ser definido manualmente pelo programador. Para obter mais informações, consulte ASP.NET ANCM (Core Module) para IIS.

Configuração do Módulo ASP.NET Core com web.config

O Módulo ASP.NET Core está configurado com a aspNetCore seção do system.webServer node no ficheiro de configuração do web.config site.

O ficheiro seguinte web.config é publicado para uma implementação dependente do framework e configura o ASP.NET Core Module para lidar com pedidos de site:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet"
                  arguments=".\MyApp.dll"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

Segue-se web.config é publicado para uma implementação autónoma:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\MyApp.exe"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

A propriedade InheritInChildApplications é definida como false para indicar que as definições especificadas dentro do elemento <location> não são herdadas por aplicações que residem num subdiretório da aplicação.

Quando uma aplicação é implementada no Azure App Service, o stdoutLogFile caminho é definido como \\?\%home%\LogFiles\stdout. O caminho guarda os registos stdout na LogFiles pasta, que é uma localização criada automaticamente pelo serviço.

Para informações sobre a configuração das subaplicações IIS, veja Configuração avançada.

Atributos do aspNetCore elemento

Attribute Description Predefinido
arguments

Atributo opcional de cadeia de caracteres.

Argumentos para o executável especificados em processPath.

disableStartUpErrorPage

Atributo booleano opcional.

Se for verdadeiro, a página 502.5 - Falha de Processo é suprimida, e a página de código de estado 502 configurada na web.config tem precedência.

false
forwardWindowsAuthToken

Atributo booleano opcional.

Caso seja verdade, o token é encaminhado para o processo filho que ouve %ASPNETCORE_PORT% como um cabeçalho 'MS-ASPNETCORE-WINAUTHTOKEN' por requisição. É responsabilidade desse processo chamar o CloseHandle neste token por solicitação.

true
hostingModel

Atributo opcional de cadeia de caracteres.

Especifica o modelo de alojamento como em processo (InProcess/inprocess) ou fora de processo ().OutOfProcess/outofprocess

OutOfProcess / outofprocess quando não está presente
processesPerApplication

Atributo inteiro opcional.

Especifica o número de instâncias do processo especificadas na processPath definição que podem ser ativadas por aplicação.

†Para alojamento em processo, o valor está limitado a 1.

A configuração processesPerApplication é desencorajada. Este atributo será removido numa versão futura.

Predefinição: 1
Min: 1
Max: 100
processPath

Atributo de string obrigatório.

Caminho para o executável que lança um processo que escuta pedidos HTTP. Caminhos relativos são suportados. Se o caminho começar com ., o caminho é considerado relativo à raiz do sítio.

rapidFailsPerMinute

Atributo inteiro opcional.

Especifica o número de vezes que o processo especificado em processPath pode crashar por minuto. Se este limite for ultrapassado, o módulo deixa de iniciar o processo pelo resto do minuto.

Não é suportado para alojamento dentro do processo.

Predefinição: 10
Min: 0
Max: 100
requestTimeout

Atributo opcional de intervalo temporal.

Especifica a duração durante a qual o ASP.NET Módulo Núcleo espera uma resposta do processo que ouve em %ASPNETCORE_PORT%.

Nas versões do Módulo ASP.NET Core lançadas com o ASP.NET Core 2.1 ou posterior, o requestTimeout é especificado em horas, minutos e segundos.

Não se aplica a alojamentos que estão em processo. Para alojamento em processo, o módulo espera que a aplicação processe o pedido.

Os valores válidos para segmentos de minutos e segundos da sequência situam-se no intervalo de 0 a 59. A utilização de 60 no valor durante minutos ou segundos resulta num erro 500 - Servidor Interno.

Predefinição: 00:02:00
Min: 00:00:00
Max: 360:00:00
shutdownTimeLimit

Atributo inteiro opcional.

Duração em segundos em que o módulo espera que o executável se desligue graciosamente quando o app_offline.htm ficheiro é detetado.

Predefinição: 10
Min: 0
Max: 600
startupTimeLimit

Atributo inteiro opcional.

A duração em segundos que o módulo espera até que o executável inicie um processo que escuta na porta. Se este limite de tempo for ultrapassado, o módulo interrompe o processo.

Durante o alojamento em processo: O processo não é reiniciado nem utiliza a configuração.

Quando hospedado fora do processo: O módulo tenta reiniciar o processo quando recebe um novo pedido e continua a tentar reiniciar o processo em pedidos recebidos, a menos que a aplicação não inicie rapidFailsPerMinute várias vezes no último minuto móvel.

Um valor de 0 (zero) não é considerado um tempo limite infinito.

Predefinição: 120
Min: 0
Max: 3600
stdoutLogEnabled

Atributo booleano opcional.

Se for verdadeiro, stdout e stderr para o processo especificado em processPath são redirecionados para o ficheiro especificado em stdoutLogFile.

false
stdoutLogFile

Atributo opcional de cadeia de caracteres.

Especifica o caminho relativo ou absoluto do ficheiro em que stdout e stderr do processo especificado em processPath são registados. Os caminhos relativos são relativos à raiz do sítio. Qualquer caminho que comece com . é relativo à raiz do sítio e todos os outros caminhos são tratados como caminhos absolutos. Quaisquer pastas fornecidas no caminho são criadas pelo módulo quando o ficheiro de registo é criado. Usando delimitadores de sublinhado, são adicionados um carimbo temporal, ID de processo e extensão de ficheiro (.log) ao último segmento do stdoutLogFile caminho. Se .\logs\stdout for fornecido como valor, um registo stdout de exemplo é guardado como stdout_20180205194132_1934.log na logs pasta quando guardado a 5 de fevereiro de 2018 às 19:41:32 com um ID de processo de 1934.

aspnetcore-stdout

Definir variáveis de ambiente

Variáveis de ambiente podem ser especificadas para o processo no processPath atributo. Especifique uma variável de ambiente com o <environmentVariable> elemento filho de um <environmentVariables> elemento de coleção. As variáveis de ambiente definidas nesta secção têm precedência sobre as variáveis de ambiente do sistema.

O exemplo seguinte estabelece duas variáveis de ambiente em web.config. ASPNETCORE_ENVIRONMENT Configura o ambiente da aplicação para Development. Um programador pode definir temporariamente este valor no web.config ficheiro para forçar o carregamento da Página de Exceção do Desenvolvedor ao depurar uma exceção de aplicação. CONFIG_DIR é um exemplo de variável de ambiente definida pelo utilizador, onde o programador escreveu código que lê o valor no arranque para formar um caminho para carregar o ficheiro de configuração da aplicação.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="inprocess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>

Observação

Uma alternativa à definição direta do ambiente em web.config é incluir a propriedade <EnvironmentName> no perfil de publicação (.pubxml) ou no ficheiro de projeto. Esta abordagem define o ambiente web.config quando o projeto é publicado:

<PropertyGroup>
  <EnvironmentName>Development</EnvironmentName>
</PropertyGroup>

Advertência

Define apenas a ASPNETCORE_ENVIRONMENT variável de ambiente para Development nos servidores de staging e testes que não são acessíveis a redes não confiáveis, como a Internet.

Configuração do IIS com web.config

A configuração do IIS é influenciada pela secção <system.webServer> de web.config para cenários do IIS que são funcionais com aplicações ASP.NET Core utilizando o Módulo ASP.NET Core. Por exemplo, a configuração IIS é funcional para compressão dinâmica. Se o IIS estiver configurado ao nível do servidor para usar compressão dinâmica, o <urlCompression> elemento no ficheiro da web.config aplicação pode desativá-lo para uma aplicação ASP.NET Core.

Para obter mais informações, consulte os seguintes tópicos:

Para definir variáveis de ambiente para aplicações individuais a correr em pools de aplicações isoladas (suportado para IIS 10.0 ou posterior), consulte a AppCmd.exe secção de comandos do tópico Variáveis <environmentVariables>de Ambiente na documentação de referência do IIS.

Secções de configuração de web.config

As secções de configuração de aplicações ASP.NET 4.x em web.config não são usadas por aplicações ASP.NET Core para configuração:

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

ASP.NET aplicações Core são configuradas usando outros fornecedores de configuração. Para obter mais informações, consulte Configuração.

Transforme web.config

Se precisares de transformar web.config aquando da publicação, vê Transformar web.config. Poderá ser necessário transformar web.config durante a publicação para definir variáveis de ambiente com base na configuração, no perfil ou no ambiente.

Recursos adicionais