Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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ónimaAnonymousAuthenticationModule |
Yes | |
Autenticação básicaBasicAuthenticationModule |
Yes | |
Mapeamento de Certificação do Cliente AutenticaçãoCertificateMappingAuthenticationModule |
Yes | |
CGICgiModule |
Não | |
Validação de ConfiguraçãoConfigurationValidationModule |
Yes | |
Erros HTTPCustomErrorModule |
Não | Middleware de Páginas de Códigos de Estado |
Registo PersonalizadoCustomLoggingModule |
Yes | |
Documento PadrãoDefaultDocumentModule |
Não | Middleware de Ficheiros Padrão |
Digest autenticaçãoDigestAuthenticationModule |
Yes | |
Navegação por DiretóriosDirectoryListingModule |
Não | Middleware de navegação de diretórios |
Compressão DinâmicaDynamicCompressionModule |
Yes | Middleware de Compressão de Resposta |
Rastreamento de Pedidos FalhadosFailedRequestsTracingModule |
Yes | ASP.NET Core Logging |
Cache de ficheirosFileCacheModule |
Não | Middleware de cache de resposta |
Cache HTTPHttpCacheModule |
Não | Middleware de cache de resposta |
Registo HTTPHttpLoggingModule |
Yes | ASP.NET Core Logging |
Redirecionamento HTTPHttpRedirectionModule |
Yes | Middleware de reescrita de URL |
Rastreamento HTTPTracingModule |
Yes | |
Autenticação por Mapeamento de Certificado de Cliente do IISIISCertificateMappingAuthenticationModule |
Yes | |
Restrições de IP e DomínioIpRestrictionModule |
Yes | |
Filtros ISAPIIsapiFilterModule |
Yes | Middleware |
ISAPIIsapiModule |
Yes | Middleware |
Suporte ao ProtocoloProtocolSupportModule |
Yes | |
Filtragem de PedidosRequestFilteringModule |
Yes |
Middleware de Reescrita de URL IRule |
Monitor de PedidosRequestMonitorModule |
Yes | |
Reescrita de URL†RewriteModule |
Yes | Middleware de reescrita de URL |
Includes do Lado do ServidorServerSideIncludeModule |
Não | |
Compressão EstáticaStaticCompressionModule |
Não | Middleware de Compressão de Resposta |
Conteúdo estáticoStaticFileModule |
Não | Middleware de ficheiros estáticos |
Cache de tokenTokenCacheModule |
Yes | |
Cache URIUriCacheModule |
Yes | |
Autorização de URLUrlAuthorizationModule |
Yes | ASP.NET Núcleo Identity |
WebDavWebDAV |
Não | |
Autenticação do WindowsWindowsAuthenticationModule |
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 :
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.
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.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 asystem.webServer/modulessecçã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.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:
Abrir {APPLICATION ROOT}\.vs\config\applicationhost.config.
Localizar o
<section>elemento para módulos IIS e mudaroverrideModeDefaultdeDenyparaAllow:<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />Localize a secção
<location path="" overrideMode="Allow"><system.webServer><modules>. Para quaisquer módulos que pretenda remover, definalockItemdetrueparafalse. No exemplo seguinte, o Módulo CGI está desbloqueado:<add name="CgiModule" lockItem="false" />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.