ASP.NET implantação da Web usando o Visual Studio: configurando permissões de pasta

por Tom Dykstra

Baixar o Projeto Inicial

Esta série de tutoriais mostra como implantar (publicar) um aplicativo Web ASP.NET para Serviço de Aplicativo do Azure Aplicativos Web ou para um provedor de hospedagem de terceiros usando o Visual Studio 2012 ou o Visual Studio 2010. Para obter informações sobre a série, consulte o primeiro tutorial da série.

Visão geral

Neste tutorial, você define permissões de pasta para a pasta Elmah no site implantado para que o aplicativo possa criar arquivos de log nessa pasta.

Quando você testa um aplicativo Web no Visual Studio usando o Cassini (Visual Studio Development Server) ou IIS Express, o aplicativo é executado sob sua identidade. Você provavelmente é um administrador em seu computador de desenvolvimento e tem autoridade total para fazer qualquer coisa com qualquer arquivo em qualquer pasta. Mas quando um aplicativo é executado no IIS, ele é executado sob a identidade definida para o pool de aplicativos ao qual o site é atribuído. Normalmente, essa é uma conta definida pelo sistema que tem permissões limitadas. Por padrão, ele tem permissões de leitura e execução nos arquivos e pastas do aplicativo Web, mas não tem acesso de gravação.

Isso se tornará um problema se o aplicativo criar ou atualizar arquivos, o que é uma necessidade comum em aplicativos Web. No aplicativo da Contoso University, elmah cria arquivos XML na pasta Elmah para salvar detalhes sobre erros. Mesmo que você não use algo como elmah, seu site pode permitir que os usuários carreguem arquivos ou executem outras tarefas que gravam dados em uma pasta em seu site.

Lembrete: se você receber uma mensagem de erro ou algo não funcionar à medida que passar pelo tutorial, certifique-se de marcar página de solução de problemas.

Testar o log de erros e os relatórios

Para ver como o aplicativo não funciona corretamente no IIS (embora tenha feito isso quando você o testou no Visual Studio), você pode causar um erro que normalmente seria registrado pela Elmah e, em seguida, abrir o log de erros do Elmah para ver os detalhes. Se Elmah não puder criar um arquivo XML e armazenar os detalhes do erro, você verá um relatório de erro vazio.

Abra um navegador e vá para http://localhost/ContosoUniversitye solicite uma URL inválida, como Studentsxxx.aspx. Você vê uma página de erro gerada pelo sistema em vez da página GenericErrorPage.aspx porque a customErrors configuração no arquivo Web.config é "RemoteOnly" e você está executando o IIS localmente:

Página de erro HTTP 404

Agora, execute Elmah.axd para ver o relatório de erros. Depois de fazer logon com as credenciais da conta de administrador ("admin" e "devpwd"), você verá uma página de log de erros vazia porque Elmah não pôde criar um arquivo XML na pasta Elmah :

Log de erros vazio

Definir permissão de gravação na pasta Elmah

Você pode definir permissões de pasta manualmente ou torná-la uma parte automática do processo de implantação. Torná-lo automático requer código MSBuild complexo e, como você só precisa fazer isso na primeira vez que implantar, as etapas a seguir são as seguintes etapas como fazê-lo manualmente. (Para obter informações sobre como tornar essa parte do processo de implantação, consulte Configurando permissões de pasta na Web Publicar no blog do Sayed Hashimi.)

  1. Em Explorador de Arquivos, navegue até C:\inetpub\wwwroot\ContosoUniversity. Clique com o botão direito do mouse na pasta Elmah , selecione Propriedades e selecione a guia Segurança .

  2. Clique em Editar.

  3. Na caixa de diálogo Permissões para Elmah, selecione DefaultAppPool e, em seguida, selecione a caixa Gravar marcar na coluna Permitir.

    Permissões para pasta ELMAH

    (Se você não vir DefaultAppPool na lista Grupo ou nomes de usuário , provavelmente usou algum outro método que não o especificado neste tutorial para configurar o IIS e ASP.NET 4 em seu computador. Nesse caso, descubra qual identidade é usada pelo pool de aplicativos atribuído ao aplicativo da Contoso University e conceda permissão de gravação a essa identidade. Confira os links sobre identidades do pool de aplicativos no final deste tutorial.) Clique em OK em ambas as caixas de diálogo.

Retestir o log de erros e os relatórios

Teste causando um erro novamente da mesma maneira (solicite uma URL incorreta) e execute a página Log de Erros . Desta vez, o erro aparece na página.

Página log de erros ELMAH

Resumo

Você concluiu todas as tarefas necessárias para que a Contoso University funcione corretamente no IIS em seu computador local. No próximo tutorial, você disponibilizará o site publicamente implantando-o no Azure.

Mais informações

Neste exemplo, o motivo pelo qual Elmah não pôde salvar arquivos de log era bastante óbvio. Você pode usar o rastreamento do IIS em casos em que a causa do problema não é tão óbvia; consulte Solução de problemas de solicitações com falha usando o rastreamento no IIS 7 no site do IIS.net.

Para obter mais informações sobre como conceder permissões a identidades do pool de aplicativos, consulte Identidades do pool de aplicativos e conteúdo seguro no IIS por meio de ACLs do sistema de arquivos no site IIS.net.