Finalmente algo sobre programação nesse blog heim? Vamos lá.
Problema:
Em uma aplicação ASP .NET, ao tentar baixar um arquivo, no caso manuais em PDF, a mensagem de acesso negado é exibida: Access to the path ‘…’ is denied
O código para baixar o arquivo está da seguinte forma:
Dim fs As FileStream Dim strPath = ConfigurationManager.AppSettings("manualpath") fs = File.Open(strPath & strFileName, FileMode.Open) Dim bytBytes(fs.Length) As Byte fs.Read(bytBytes, 0, fs.Length) fs.Close() Response.AddHeader("Content-disposition", "attachment; filename= strFileName) Response.ContentType = "application/octet-stream" Response.BinaryWrite(bytBytes) Response.End()
O web.config está configurado com impersonate, para alterar o usuário que roda a aplicação:
<identity impersonate="true"; userName="SrCoelho"; password="******"/>;
———————————————————————————————-
Solução:
Depois de muito procurar a solução para o problema acima, só consegui encontrar posts e soluções pela metade, ou até mesmo que não funcionavam. Isso procurando em inglês, pois em português é praticamente zero a chance de achar alguma coisa. Portanto resolvi colaborar com a comunidade brasileira e compartilhar a solução que eu não encontrei na net.
O usuário especificado no impersonate (SrCoelho) deve ter permissão de leitura em todas as pastas da aplicação, até aí nada de novidade, porém na pasta onde estão os manuais em PDF o usuário deve possuir a permissão de escrita (write).
Pronto, resolvido! Horas de trabalho e pesquisa na internet resolvidos em 2 ou 3 cliques. Fácil não? É só saber onde clicar. Não é atoa que conhecimento cu$ta caro.
—
Sr. Coelho.
Gostou? Visite Artigos do Sr. Coelho para mais dicas.
Leave a Reply