Partilhar via


Implantando um aplicativo Web ASP.NET com SQL Server Compact usando o Visual Studio ou o Visual Web Developer: Definindo permissões de pasta – 6 de 12

por Tom Dykstra

Baixar o Projeto Inicial

Esta série de tutoriais mostra como implantar (publicar) um projeto de aplicativo Web ASP.NET que inclui um banco de dados SQL Server Compact usando o Visual Studio 2012 RC ou Visual Studio Express RC 2012 para Web. Você também pode usar o Visual Studio 2010 se instalar a Atualização de Publicação na Web. Para obter uma introdução à série, consulte o primeiro tutorial da série.

Para obter um tutorial que mostra os recursos de implantação introduzidos após o lançamento do RC do Visual Studio 2012, mostra como implantar SQL Server edições diferentes de SQL Server Compact e mostra como implantar em Serviço de Aplicativo do Azure Aplicativos Web, consulte ASP.NET Implantação da Web usando o Visual Estúdio.

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), o aplicativo é executado em 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.

Testando o log de erros e 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:

Error_page_Test

Agora, execute Elmah.axd para ver o relatório de erros. Você vê uma página de log de erros vazia porque Elmah não pôde criar um arquivo XML na pasta Elmah :

Error_log_page_empty

Definindo a 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 implanta, este tutorial mostra apenas como fazer isso 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.)

No Windows Explorer, 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 .

Elmah_folder_Properties_Security_tab

(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 Editar. Na caixa de diálogo Permissões para Elmah, selecione DefaultAppPool e, em seguida, selecione a caixa Gravar marcar na coluna Permitir.

Permissions_for_Elmah_dialog_box

Clique em OK em ambas as caixas de diálogo.

Retendo log de erros e 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.

Elmah_Error_Log_page_Test

Você também precisa de permissão de gravação na pasta App_Data porque tem SQL Server Compact arquivos de banco de dados nessa pasta e deseja poder atualizar dados nesses bancos de dados. Nesse caso, no entanto, você não precisa fazer nada extra porque o processo de implantação define automaticamente a permissão de gravação na pasta App_Data .

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 em um provedor de hospedagem.

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.