Pular para o conteúdo
.NETPublicando e hospedando no IIS
Módulo 06APIs em Produção

Publicando e hospedando no IIS

intermediario 45 min de leitura·Atualizado · .NET 9
Resumo

Publicamos a Web API e a hospedamos no IIS usando o Hosting Bundle e o modelo in-process. Cobrimos dotnet publish, o módulo ASP.NET Core, o ambiente e o teste da aplicação implantada.

1. Objetivos de Aprendizagem#

  • Gerar artefatos de publicação com dotnet publish em Release.
  • Instalar o Hosting Bundle e configurar o site no IIS.
  • Definir o ambiente e validar o deploy.

2. Pré-requisitos#

  • Projeto configurado (Módulo 16).

3. Conceito#

O IIS atua como reverse proxy/host, e o ASP.NET Core Module (ANCM) faz a ponte com o processo .NET. No modelo in-process (padrão), a aplicação roda dentro do worker do IIS (w3wp), com melhor desempenho. O porquê de publicar em Release: otimizações e ausência de artefatos de depuração.

4. Mão na Massa#

4.1. Setup#

Instale no servidor o .NET Hosting Bundle (inclui runtime + ANCM). Habilite o IIS com o console de recursos do Windows.

4.2. Implementação Passo a Passo#

  1. Publicar:
Shell
dotnet publish Catalog.Api -c Release -o ./publish
  1. No IIS: crie um Application Pool com ".NET CLR Version = No Managed Code" (o runtime é o .NET, não o .NET Framework).
  2. Crie um Site/aplicação apontando para a pasta publish.
  3. O web.config gerado configura o ANCM:
XML
<aspNetCore processPath="dotnet" arguments=".\Catalog.Api.dll"
            hostingModel="inprocess" stdoutLogEnabled="false" />
  1. Defina o ambiente por variável (não use Development em produção):
XML
<environmentVariables>
  <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
</environmentVariables>

4.3. Executando#

Acesse o site pelo host configurado e teste um endpoint:

Shell
curl -i https://catalog.suaempresa.com/api/produtos

5. Exemplo Completo#

Checklist de deploy: publicar em Release → copiar publish para o servidor → app pool "No Managed Code" → ambiente Production → connection string/segredos via variáveis de ambiente → testar HTTPS.

6. Boas Práticas e Armadilhas#

FaçaEvite
Publicar em ReleasePublicar em Debug em produção
Definir ASPNETCORE_ENVIRONMENT=ProductionDeixar Development (expõe página de erro detalhada)
Fornecer segredos por variáveis/secret storeSegredos no appsettings publicado
Atenção

habilitar stdoutLogEnabled="true" permanentemente enche o disco. Use-o apenas temporariamente para diagnosticar falhas de inicialização.

7. Segurança e Produção#

  • Publique em Release e nunca com ambiente Development — evita vazamento de stack traces.
  • Configure HTTPS com certificado válido; force redirecionamento e HSTS.
  • Rode o app pool com uma identidade de menor privilégio; proteja o acesso aos arquivos de log e à connection string.

8. Exercícios#

  • Fácil: publique e liste o conteúdo da pasta publish.
  • Médio: configure a connection string por variável de ambiente no IIS.
  • Desafio: habilite HSTS e redirecionamento HTTPS e valide com um cliente.

9. Resumo#

Publicamos em Release e hospedamos no IIS via Hosting Bundle e ANCM (in-process), definindo Production e fornecendo segredos por variáveis. HTTPS e menor privilégio completam o deploy seguro.

10. Próximos Passos#

Módulo 44 (Bônus): melhorias de performance na resposta.

11. Referências#

43-01 — Publicando e hospedando no IIS | Curso ASP.NET Core