6 maneiras de fazer a mesma coisa, o que é considerado boas práticas?

As vezes tem tantas maneiras diferentes de fazer o mesmo código que nós ficamos na dúvida quanto a qual maneira usar. O que seria considerado "boa prática" pela comunidade e o que sua equipe entenderia melhor. Suponhamos que você esteja trabalhando dentro de um método de um Domain Service chamado UmDomainServiceChique(objetoDoDominio) que será chamado por uma API. Você tem uma regra de negócio chique para ser verificada que por enquanto chamarei de VerificaMinhaRegraChiqueComplexa(). Você chama UmDomainServiceChique(objetoDoDominio) e caso VerificaMinhaRegraChiqueComplexa() retorne true você vai querer que UmDomainServiceChique faça o que tem que fazer e a api retornar Ok 200, caso contrário você quer que a API responda um erro qualquer, tipo BadRequest, e retornar uma mensagem dizendo que VerificaMinhaRegraChiqueComplexa deu ruim. Eu vejo 6 maneiras de fazer isso, gostaria de saber a opinião de outrs devs sobre qual seria a maneira menos gambiarr

Como dar Permissão para o ApplicationPoolIdentity no sistema de arquivos

As vezes você está fazendo um website ou sistema web em Asp.Net que precisa ler e gravar um arquivo em uma determinada pasta. Geralmente é uma subpasta do proprio aplicativo.

Quando você tenta rodar a aplicação recebe uma mensagem de erro dizendo que a aplicação não tem privilégios para gravar o dito cujo arquivo.

Geralmente, quando isso acontecia, eu ia lá nas configurações avançadas do AppPool e trocava o ApplicationPoolIdentity por NetworkService ou coisa assim, e dava permissão na pasta para o NetworkService. Afinal o AppPool cria um usuário instantâneo para o ApplicationPoolIdentity e esse cara não existe no windows, não tem como dar permissão pra ele, certo? Errado.

Propriedades do App Pool
Geralmente o usuário é ApplicationPoolIdentity

Escolha de conta de sistema
Muita gente troca para NetworkService




Você pode dar permissão para o ApplicationPoolIdentity fazendo o seguinte: na hora de escolher o nome do usuário que terá acesso a pasta da sua aplicação (lá no inetpub/wwwroot/SeuApp/ você coloca o nome do seu AppPoll prefixado de IIS AppPool\.

Por exemplo: se o nome do seu AppPool é DefaultAppPool, então o nome do usuário (em local machine) é IIS AppPool\DefaultAppPool. Se é HelDesk, então IIS AppPool\HelpDesk e assim por diante.

Na figura o nome do meu AppPool é DNN2, porque é o segundo appPool que criei para meu DotNetNuke.

permissões de acesso ao sistema de arquivos
Digite iis apppool\NomeDoPool
Quando você digita IIS AppPool\NomeDoPool o usuário não existe, mas quando você verifica o nome (check names) o nome é substituído automaticamente pelo nome do AppPool, mas se você digitar o nome do appPool direto não funciona.

Depois do check
Depois de dar um Check o nome vira o próprio appPool

Fontes
http://stackoverflow.com/questions/7334216/iis7-permissions-overview-applicationpoolidentity
https://www.iis.net/learn/manage/configuring-security/application-pool-identities
http://stackoverflow.com/questions/5437723/iis-apppoolidentity-and-file-system-write-access-permissions

Comentários

Postagens mais visitadas deste blog

Uso de memória no SQL Server

Busca de CEP com o Lazarus - Parte 1 - UrlEncode

Botão Add This para adicionar seu post em qualquer rede