IIS application pool não inicializa e retornando erro 503

Recentemente tive um problema em ambiente de desenvolvimento onde o application pool “não parava em pé” segundos após ser inicializado. Visualizando os logs do windows vi estas mensagens:

Application pool “NomeApplicationPool” has been disabled. Windows Process Activation Service (WAS) encountered a failure when it started a worker process to serve the application pool.

Mensagens do tipo warning:
Application pool “NomeApplicationPoolhas been disabled. Windows Process Activation Service (WAS) did not create a worker process to serve the application pool because the application pool identity is invalid.

“The identity of application pool “NomeApplicationPool” is invalid. The user name or password that is specified for the identity may be incorrect, or the user may not have batch logon rights. If the identity is not corrected, the application pool will be disabled when the application pool receives its first request. If batch logon rights are causing the problem, the identity in the IIS configuration store must be changed after rights have been granted before Windows Process Activation Service (WAS) can retry the logon. If the identity remains invalid after the first request for the application pool is processed, the application pool will be disabled. The data field contains the error number.”

O application pool da minha aplicação estava com um usuário de sistema que criei então após algumas pesquisas vi a conta de serviço do windows tem praticamente um acesso de administrador a máquina local mas, por padrão, o Windows impede que esse serviço tenha acesso à sua rede local, então se a aplicação precisar de um acesso a uma impressora compartilhada ou uma pasta compartilhada na rede esse usuário não irá conseguir. No meu caso a aplicação precisava acessar recursos compartilhados na rede para salvar e buscar arquivos.

Ok, então toda conta que precisar acessar esse tipo de recurso eu vou ter que coloca-lo como administrador do servidor? Meio inseguro isso, não?

Sim, por isso, o windows fornece o “Logon as Batch Job” para conceder acesso a um único usuário conectado dentro de um processo de serviço.

Veja uma tabela de comparativos:

UsuárioPermissões
Windows servicePode usar impressoras e pastas locais
Logged-in usersPode usar impressoras e pastas locais e compartilhadas
Impersonated usersDeve ter “logon as batch job” definido no perfil

Como resolver o problema “Logon as Batch job”?

No menu iniciar busque por secpol.msc ou digite este comando no “executar”.

Em “Local Security Policy”, vá para Security Settings / Local Policies / User Rights Administration conforme imagem abaixo:

Clique duas vezes em “Logon as a batch job” e na janela que abrir clique na opção “Add User or Group”. Em seguinda irá aparecer aquela clássica janela de busca de usuários do windows. Coloque o usuário que está configurado no application pool dominio/usuário e pronto. Agora é só inicializar o application pool novamente.