Partilhar via


Módulos IIS com ASP.NET Core

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.

Alguns dos módulos nativos do IIS e todos os módulos geridos pelo IIS não conseguem processar pedidos para ASP.NET aplicações Core. Em muitos casos, ASP.NET Core oferece uma alternativa aos cenários abordados pelos módulos nativos e geridos do IIS.

Módulos nativos

A tabela indica módulos nativos do IIS que funcionam com ASP.NET aplicações Core e com o Módulo Core ASP.NET.

Módulo Funcional com aplicações ASP.NET Core ASP.NET Opção Principal
Autenticação anónima
AnonymousAuthenticationModule
Yes
Autenticação básica
BasicAuthenticationModule
Yes
Mapeamento de Certificação do Cliente Autenticação
CertificateMappingAuthenticationModule
Yes
CGI
CgiModule
Não
Validação de Configuração
ConfigurationValidationModule
Yes
Erros HTTP
CustomErrorModule
Não Middleware de Páginas de Códigos de Estado
Registo Personalizado
CustomLoggingModule
Yes
Documento Padrão
DefaultDocumentModule
Não Middleware de Ficheiros Padrão
Digest autenticação
DigestAuthenticationModule
Yes
Navegação por Diretórios
DirectoryListingModule
Não Middleware de navegação de diretórios
Compressão Dinâmica
DynamicCompressionModule
Yes Middleware de Compressão de Resposta
Rastreamento de Pedidos Falhados
FailedRequestsTracingModule
Yes ASP.NET Core Logging
Cache de ficheiros
FileCacheModule
Não Middleware de cache de resposta
Cache HTTP
HttpCacheModule
Não Middleware de cache de resposta
Registo HTTP
HttpLoggingModule
Yes ASP.NET Core Logging
Redirecionamento HTTP
HttpRedirectionModule
Yes Middleware de reescrita de URL
Rastreamento HTTP
TracingModule
Yes
Autenticação por Mapeamento de Certificado de Cliente do IIS
IISCertificateMappingAuthenticationModule
Yes
Restrições de IP e Domínio
IpRestrictionModule
Yes
Filtros ISAPI
IsapiFilterModule
Yes Middleware
ISAPI
IsapiModule
Yes Middleware
Suporte ao Protocolo
ProtocolSupportModule
Yes
Filtragem de Pedidos
RequestFilteringModule
Yes Middleware de Reescrita de URL IRule
Monitor de Pedidos
RequestMonitorModule
Yes
Reescrita de URL
RewriteModule
Yes Middleware de reescrita de URL
Includes do Lado do Servidor
ServerSideIncludeModule
Não
Compressão Estática
StaticCompressionModule
Não Middleware de Compressão de Resposta
Conteúdo estático
StaticFileModule
Não Middleware de ficheiros estáticos
Cache de token
TokenCacheModule
Yes
Cache URI
UriCacheModule
Yes
Autorização de URL
UrlAuthorizationModule
Yes ASP.NET Núcleo Identity
WebDav
WebDAV
Não
Autenticação do Windows
WindowsAuthenticationModule
Yes

†O módulo de Reescrita de URL e os tipos de correspondência isFile e isDirectory não funcionam com aplicações ASP.NET Core devido às alterações na estrutura de diretórios.

Módulos sob gestão

Os módulos geridos não funcionam com aplicações ASP.NET Core alojadas quando a versão .NET CLR do pool de aplicações está definida para Sem Código Gerido. ASP.NET Core oferece alternativas de middleware em vários casos.

Módulo ASP.NET Opção Principal
Identificação Anónima
Autenticação Padrão
Autorização de Arquivo
FormsAuthentication Cookie Middleware de Autenticação
OutputCache Middleware de cache de resposta
Profile
RoleManager
ScriptModule-4.0
Session Middleware de Sessão
Autorização URL
UrlMappingsModule Middleware de reescrita de URL
UrlRoutingModule-4.0 ASP.NET Núcleo Identity
Autenticação do Windows

Alterações à aplicação do Gestor do IIS

Ao usar o IIS Manager para configurar definições, o ficheiroweb.config da aplicação é alterado. Se estiver a implementar uma aplicação e incluir web.config, quaisquer alterações feitas no IIS Manager serão sobrescritas pelo ficheiro web.config implementado. Se forem feitas alterações ao ficheiro web.config do servidor, copie imediatamente o ficheiro web.config atualizado do servidor para o projeto local.

Desativação de módulos IIS

Se um módulo IIS estiver configurado ao nível do servidor e tiver de ser desativado para uma aplicação, uma adição ao ficheiro web.config da aplicação pode desativar o módulo. Ou deixa o módulo no local e desativa-o usando uma configuração (se disponível) ou remove o módulo da aplicação.

Desativação de módulos

Muitos módulos oferecem uma configuração que permite desativá-los sem remover o módulo da aplicação. Esta é a forma mais simples e rápida de desativar um módulo. Por exemplo, o Módulo de Redirecionamento HTTP pode ser desativado com o <httpRedirect> elemento em web.config:

<configuration>
  <system.webServer>
    <httpRedirect enabled="false" />
  </system.webServer>
</configuration>

Para mais informações sobre como desativar módulos com definições de configuração, siga os links na secção Elementos Filhos do IIS <system.webServer>.

Remoção de módulos

Se optar por remover um módulo com uma configuração em web.config, desbloqueie o módulo e desbloqueie primeiro a <modules> secção de web.config :

  1. Desbloqueia o módulo ao nível do servidor. Selecione o servidor IIS na barra lateral de Conexões do Gestor IIS. Abra os Módulos na área IIS . Selecione o módulo na lista. Na barra lateral de Ações à direita, selecione Desbloquear. Se a entrada de ação do módulo aparecer como Lock, o módulo já está desbloqueado e não é necessária qualquer ação. Desbloqueia tantos módulos quanto planeias remover de web.config mais tarde.

  2. Implemente a aplicação sem uma secção <modules> em web.config. Se uma aplicação for implementada com um web.config contendo a secção <modules> sem ter desbloqueado a secção primeiro no Gestor de IIS, o Gestor de Configurações lança uma exceção ao tentar desbloquear a secção. Por isso, implemente a aplicação sem uma <modules> secção.

  3. Desbloqueie a <modules> secção de web.config. Na barra lateral de Ligações, selecione o site em Sites. Na área de Gestão , abra o Editor de Configuração. Use os controlos de navegação para selecionar a system.webServer/modules secção. Na barra lateral de Ações à direita, selecione Desbloquear a secção. Se a entrada de ação da secção do módulo aparecer como Secção de Fechadura, a secção do módulo já está desbloqueada e não é necessária qualquer ação.

  4. Adicione uma <modules> secção ao ficheiro local web.config da aplicação com um <remove> elemento para remover o módulo da aplicação. Adicione vários <remove> elementos para remover vários módulos. Se web.config alterações forem feitas no servidor, faça imediatamente as mesmas alterações ao ficheiro web.config do projeto localmente. Remover um módulo usando esta abordagem não afeta a utilização do módulo com outras aplicações no servidor.

    <configuration>
     <system.webServer>
       <modules>
         <remove name="MODULE_NAME" />
       </modules>
     </system.webServer>
    </configuration>
    

Para adicionar ou remover módulos para IIS Express usando web.config, modificar applicationHost.config para desbloquear a <modules> secção:

  1. Abrir {APPLICATION ROOT}\.vs\config\applicationhost.config.

  2. Localizar o <section> elemento para módulos IIS e mudar overrideModeDefault de Deny para Allow:

    <section name="modules"
             allowDefinition="MachineToApplication"
             overrideModeDefault="Allow" />
    
  3. Localize a secção <location path="" overrideMode="Allow"><system.webServer><modules>. Para quaisquer módulos que pretenda remover, defina lockItem de true para false. No exemplo seguinte, o Módulo CGI está desbloqueado:

    <add name="CgiModule" lockItem="false" />
    
  4. Depois de desbloquear a <modules> secção e os módulos individuais, é livre de adicionar ou remover módulos IIS usando o ficheiro web.config da aplicação para correr a aplicação no IIS Express.

Um módulo IIS também pode ser removido com Appcmd.exe. Forneça o MODULE_NAME e APPLICATION_NAME no comando.

Appcmd.exe delete module MODULE_NAME /app.name:APPLICATION_NAME

Por exemplo, remover o DynamicCompressionModule do Site Padrão:

%windir%\system32\inetsrv\appcmd.exe delete module DynamicCompressionModule /app.name:"Default Web Site"

Configuração mínima do módulo

Os únicos módulos necessários para executar uma aplicação ASP.NET Core são o Módulo de Autenticação Anónima e o Módulo Core ASP.NET.

O Módulo de Cache URI (UriCacheModule) permite ao IIS armazenar em cache a configuração do site ao nível da URL. Sem este módulo, o IIS tem de ler e analisar a configuração em cada pedido, mesmo quando a mesma URL é repetidamente solicitada. Analisar a configuração em cada solicitação resulta numa penalidade significativa de desempenho. Embora o Módulo de Cache URI não seja estritamente obrigatório para uma aplicação ASP.NET Core alojada, recomendamos que o Módulo de Cache URI esteja ativado para todas as implementações ASP.NET Core.

O Módulo de Cache HTTP (HttpCacheModule) implementa a cache de saída IIS e também a lógica para armazenar itens na cache HTTP.sys. Sem este módulo, o conteúdo deixa de ser armazenado em cache em modo kernel e os perfis de cache são ignorados. A remoção do Módulo de Cache HTTP geralmente tem efeitos adversos no desempenho e na utilização de recursos. Embora o Módulo de Cache HTTP não seja estritamente obrigatório para que uma aplicação ASP.NET Core alojada funcione, recomendamos que o Módulo de Cache HTTP esteja ativado para todas as implementações ASP.NET Core.

Recursos adicionais