Publicando aplicação .Net Core no IIS

O IIS (Internet Information Services) é um servidor web criado pela Microsoft e é utilizado pelas tecnologias .net. Com isso, é proposto uma maneira de configurar o mesmo, o qual pode-se ver a seguir:
Passo 1 (Habilitar IIS)
Por default, algumas máquinas não tem o IIS habilitado, para isso faça:
- Acesse o painel de controle
- Clique em adicionar e/ou remover programas
- Clique em Habilitar/desabilitar recursos do windows
- Selecione a opção de “Serviços de Informações da Internet” (IIS)
- Pressione “OK” e aguarde enquanto o Windows realiza as configurações
Obs.: Caso o IIS já esteja habilitado, reinicie o seu sistema ou rode os seguinte comandos no prompt (abra-o como administrador):
- net stop was /y (irá parar o serviço de publicação World Wide Web)
- net start w3svc (irá iniciar o serviço)
Passo 2 (Instalar o .Net Core Windows Server Hosting)
O IIS atualmente não reconhece aplicações em .Net Core, com isso, necessita-se informar para ele.
- Link para download do .Net Core 1.0.0
- Link para donwload do .Net Core 2.0.5
- Irá instalar o .net core runtime, bibliotecas e módulos do asp.net core para o ISS
Depois de terminar a instalação, percebe-se que será adicionado a dll “aspnetcore” no local “C:\Windows\System32\inetsrv\aspnetcore.dll”, se estiver rodando o IIS em 32 bit. Caso esteja rodando em 64 bit estará em “C:\Windows\SysWOW64\inetsrv\aspnetcore.dll”. Com isso, o módulo “AspNetCoreModule” será adicionado ao IIS nativo automaticamente, como visto:

Passo 3 (Adicionando dependências do IIS no projeto)
Para que o projeto execute perfeitamente, algumas alterações, via código, devem ser realizadas.
Adicione o pacote “Microsoft.AspNetCore.Server.IISIntegration” no projeto principal, o qual é um Middleware para integrar com o IIS. E adicione o seguinte código na sua classe “Program.cs”
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
E o seguinte código no método “Configure” da classe “Startup.cs”:
services.Configure<IISOptions>(o =>
{
o.ForwardClientCertificate = false;
});
Passo 4 (Publicando projeto)
Precisa-se gerar os arquivos necessários para publicação do projeto. Com isso, no caminho “C:\inetpub\wwwroot” crie uma pasta com o nome de seu projeto e atribua permissão total a ela.
Abra a solução que deseja publicar, clique com o botão direito no projeto principal e selecione “Publicar”.

Feito isso, escolha a opção de publicar em uma pasta e defina o caminho referente a pasta que tinha sido criado.

Após selecionar o tipo de publicação, clique em publicar e aguarde enquanto o Visual Studio termina de realizar as operações necessárias.
Precisa-se configurar o IIS para receber a aplicação. Vá em “Meu Computador”, clique com o botão direito e selecione a opção “Gerenciar”. Após abrir a tela de gerenciamento do computador, clique em “Serviços e Aplicativos” e selecione a opção “Serviços de Informações da Internet”.
Nesta área cria-se uma aplicativo web para rodar as aplicações. Para isso, adiciona-se um novo Pool de Aplicação, clicando com o botão direito em cima do item e selecionando a opção “Adicionar Pool de Aplicação”, inserindo as seguintes informações:

Após configurar o Pool de Aplicação insere-se um novo site, onde deve clicar com o botão direito em “Sites” e selecionar a opção “Adicionar WebSite” e, por fim, preencha com as seguintes informações:

Percebe-se que foi adicionado uma URL personalizada “netcore.teste”, com isso deve-se “apontá-la” para que execute no localhost. Para isso, abra a pasta “C:\Windows\System32\drivers\etc” e edite o arquivo “hosts”, inserindo a seguinte linha no final do arquivo:
“127.0.0.1 netcore.teste”
Após finalizar todas as configurações, basta acessar a URL configurada:

Conclusão
Apesar de não ter recursos nativos já integrados no IIS, pode-se configurá-lo para habilitar a execução de demais aplicações, como foi o caso do .Net Core.
Referências
- https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS
- https://stackoverflow.com/questions/48132915/asp-net-core-2-0-deploy-to-iis
- https://neelbhatt.com/2018/01/30/deploy-net-core-application-to-iis-step-by-step-guide/
- http://jakeydocs.readthedocs.io/en/latest/publishing/iis.html
- https://blogs.msdn.microsoft.com/rohithrajan/2018/03/13/500-19-error-or-502-5-error-when-hosting-asp-net-core-2-application-inside-iis/