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.
Como ASP.NET aplicações Core correm num processo separado do processo worker do IIS, o Módulo Core de ASP.NET trata da gestão de processos. O módulo inicia o processo para a aplicação ASP.NET Core quando chega o primeiro pedido e reinicia a aplicação se esta desligar ou falhar inesperadamente. Este é essencialmente o mesmo comportamento que se vê nas aplicações que correm em processo e que são geridas pelo Serviço de Ativação de Processos do Windows (WAS).
O diagrama seguinte ilustra a relação entre o IIS, o Módulo Core ASP.NET e uma aplicação alojada fora do processo:
- Os pedidos chegam da web para o driver em modo kernel HTTP.sys.
- O driver encaminha os pedidos para o IIS na porta configurada do site. A porta configurada é normalmente 80 (HTTP) ou 443 (HTTPS).
- O módulo encaminha os pedidos para Kestrel uma porta aleatória da aplicação. A porta aleatória não é a 80 nem a 443.
O ASP.NET Módulo Core especifica a porta através de uma variável de ambiente no arranque. A UseIISIntegration extensão configura o servidor para escutar em http://localhost:{PORT}. São realizadas verificações adicionais e pedidos que não têm origem no módulo são rejeitados. O módulo não suporta encaminhamento HTTPS. Os pedidos são encaminhados via HTTP mesmo que recebidos por IIS via HTTPS.
Depois Kestrel de recolher o pedido do módulo, este é encaminhado para o pipeline de middleware ASP.NET Core. O pipeline de middleware processa o pedido e passa-o como uma instância HttpContext para a lógica da aplicação. Middleware adicionado pela integração IIS atualiza o esquema, o IP remoto e a base de caminhos para ter em conta o encaminhamento do pedido para Kestrel. A resposta da aplicação é encaminhada de volta para o IIS, que a encaminha para o cliente HTTP que iniciou o pedido.
Para obter orientações sobre a configuração do ASP.NET Core Module, consulte ASP.NET Core Module (ANCM) para IIS.
Para mais informações sobre alojamento, consulte Host in ASP.NET Core.
Configuração da aplicação
Ativar os componentes IISIntegration
Ao construir um host em CreateHostBuilder (Program.cs), chame CreateDefaultBuilder para permitir a integração IIS:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
...
Para mais informações sobre CreateDefaultBuilder, veja .NET Generic Host no ASP.NET Core.
Modelo de alojamento fora de processo
Para configurar opções IIS, inclua uma configuração de serviço para IISOptions em ConfigureServices. O exemplo seguinte impede a aplicação de preencher HttpContext.Connection.ClientCertificate:
services.Configure<IISOptions>(options =>
{
options.ForwardClientCertificate = false;
});
| Opção | Predefinido | Configuração |
|---|---|---|
AutomaticAuthentication |
true |
Se true, o Middleware de Integração IIS configura a autenticação como sendo realizada pela HttpContext.User. Se false, o middleware só fornece uma identidade para HttpContext.User e responde a um desafio quando explicitamente solicitado pelo AuthenticationScheme. A autenticação do Windows deve estar ativada no IIS para AutomaticAuthentication funcionar. Para mais informações, consulte o tópico Autenticação do Windows . |
AuthenticationDisplayName |
null |
Define o nome de exibição mostrado aos utilizadores nas páginas de login. |
ForwardClientCertificate |
true |
Se true e o MS-ASPNETCORE-CLIENTCERT cabeçalho do pedido estiver presente, o HttpContext.Connection.ClientCertificate é preenchido. |
Cenários de servidor proxy e balanceador de carga
O Middleware de Integração IIS e o Módulo ASP.NET Core estão configurados para encaminhar o:
- Esquema (HTTP/HTTPS).
- Endereço IP remoto onde o pedido se originou.
O Middleware de Integração IIS configura o Middleware de Cabeçalhos Encaminhados.
Pode ser necessária uma configuração adicional para aplicações alojadas atrás de servidores proxy e balanceadores de carga adicionais. Para obter mais informações, consulte Configurar o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga.
Modelo de alojamento fora de processo
Para configurar uma aplicação para alojamento fora do processo, defina o valor da <AspNetCoreHostingModel> propriedade para OutOfProcess no ficheiro do projeto (.csproj):
<PropertyGroup>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
A hospedagem em processo é estabelecida com InProcess, que é o valor predefinido.
O valor de <AspNetCoreHostingModel> não distingue entre maiúsculas e minúsculas, portanto, inprocess e outofprocess são valores válidos.
Kestrel servidor é usado em vez do IIS HTTP Server (IISHttpServer).
Para operações fora do processo, são feitas chamadas de CreateDefaultBuilder para UseIISIntegration.
- Configura a porta e o caminho base onde o servidor deve escutar quando estiver a correr atrás do Módulo ASP.NET Core.
- Configure o host para captar erros de arranque.
Nome do processo
Process.GetCurrentProcess().ProcessName reporta w3wp/iisexpress (em processo) ou dotnet (fora de processo).
Muitos módulos nativos, como a Autenticação do Windows, permanecem ativos. Para saber mais sobre os módulos IIS ativos com o Módulo Core ASP.NET, consulte módulos IIS com ASP.NET Core.
O Módulo Núcleo ASP.NET também pode:
- Defina variáveis de ambiente para o processo do trabalhador.
- Registar a saída de stdout no armazenamento de ficheiros para solução de problemas de arranque.
- Encaminhar tokens de autenticação do Windows.