Você está vendo duas coisas, geralmente confusas no ASP.NET:
- "identidade do usuário" - a autenticação de uma conta de usuário não tem nada a ver com a conta ou a identidade que realmente é executada no IIs e no ASP.NET. A autenticação anônima permite que qualquer usuário acesse qualquer conteúdo público sem fornecer um desafio de nome de usuário e senha ao navegador do cliente. A conta IUSR anônima que é autenticada por padrão no IIS apenas aplica acesso ao conteúdo do site público. Isso não afeta os processos ou recursos usados pelos serviços subjacentes IIs ou ASP.NET.
- "identidade do aplicativo" - esta é a conta "WindowsIdentity" real no servidor que é realmente executada atrás do IIS e do ASP.NET, que é a conta de identidade do pool de aplicativos atribuída ao pool pelos IIs e fornecida ao ASP.NET. Seu processo do ASP.NET é executado sob esta conta de identidade do pool de aplicativos (chamada de conta virtual no IIs versão 7.5+) por padrão.
Explicação: Primeiro, "autenticação" no ASP.NET é apenas um evento geralmente configurado no web.config que efetua login em uma determinada conta de usuário que é passada como um token de usuário pelos IIs para o ASP.NET como um objeto simples HttpContext ... ou seja, a sessão atual ou o contexto do usuário atual. Na verdade, ele não altera a identidade do Windows que está executando o processo do ASP.NET, apenas passa um token de identificação do usuário para ele. Usando o HttpContext, seu código pode usar esse ID ou nome para armazenar direitos de banco de dados em várias seções do seu site. Mas isso não afetará o acesso a arquivos pelo ASP.NET porque não afeta nem altera a identidade da conta "processo" real do aplicativo que executa o ASP.NET nos IIs.
Isso não acontece até que você faça a "Representação", que instrui o ASP.NET a se passar por qualquer token passado por IIs e, em seguida, executá-lo com o ID da conta. Você pode definir a representação no seu web.config. Quando você ativa a representação no ASP.NET, o WindowsIdentity é alterado no processo de trabalho para qualquer conta autenticada passada para o ASP.NET a partir do IIS e, em seguida, você pode acessar arquivos, com base, é claro, em quais direitos você atribui a essa conta de usuário. É importante observar quando isso ocorre temporariamente e o ASP.NET pode voltar à sua identidade de processo padrão, que está nas versões atuais do IIs novamente na conta de Identidade do Pool de Aplicativos atribuída a um determinado Pool de Aplicativos.
Quando o IIs usa apenas a conta de usuário anônimo simples, sem autenticação explícita definida no ASP.NET, o IIs inicia por padrão a conta de Identidade do Pool de Aplicativos atribuída ao Pool de Aplicativos atribuída ao site e a transmite ao ASP.NET e ao processo de trabalho que a executa. Essa conta de identidade do pool de aplicativos processa todas as solicitações do IIS e executa o ASP.NET para esse site.
Quando o IIs inicia sob essa configuração e é acessado por um usuário, ele realmente autentica nos bastidores, por padrão, a conta IUSR anônima que determina o acesso a páginas da Web e outros recursos básicos. Mas essa conta NÃO é passada para o ASP.NET. E isso não afeta a identidade do pool de aplicativos que o IIS executa e no qual o ASP.NET é executado.
Se você definir Representar como "true", digamos, seu web.config, E você estiver usando a conta IUSR anônima padrão nos IIs para acesso público, E você definirá para true explicitamente a propriedade anonymousAuthentication no web.config (em vez de usar um Windows ou outra conta de login), os IIs descartarão a Identidade do Pool de Aplicativos e os IIs e o ASP.NET agora executarão seus processos de aplicativo como a conta autenticada e representada por IUSR anônima.
Quando você fizer isso, o ASP.NET e seus processos estarão executando na conta IUSR .... ou seja, o processo de aplicativos do ASP.NET executará sua conta WindowsIdentity como a conta IUSR. Agora você pode aplicar acesso de leitura / gravação a essa conta IUSR anônima e às pastas que você deseja que essa conta acesse. (Nota: certifique-se de adicionar a conta de processo padrão, a conta do pool de aplicativos do pool e os direitos dessas pastas. Isso está de acordo com a recomendação da Microsoft)
Boa sorte!