none
System.UnauthorizedAccessException: Access to the path is denied RRS feed

  • Pergunta

  • Boa tarde.

    Gostaria de solicitar ajuda a respeito de um problema na escrita de arquivos que estou tendo em uma página Asp.Net. Localmente tudo ocorre sem problemas, no entanto, quando a escrita deve ser feita em um local na rede, tenho o erro abaixo.

    "System.UnauthorizedAccessException: Access to the path is denied.

    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
    at ServiceDesk.GestaoMudanca.BacklogDetalhado.btnLiberar_Click(Object sender, ImageClickEventArgs e) in C:\Users\caio.santanna\Documents\Visual Studio 2010\Projects\xxxxxxxxx\xxxxxxxxxxxxx.aspx.cs:line 412"

    E essa é a linha exata que gera o erro, o momento da geração do arquivo

    System.IO.FileStream fsArquivo = new System.IO.FileStream(PathArquivo, System.IO.FileMode.Create, System.IO.FileAccess.Write)

    Entendo que o erro ocorra por restrições de acesso ao destino, no entanto, já tentei atribuir permissões a uma série de usuários (com base em algumas pesquisas na web). Pelo que me informei, o acesso deveria ser concedido à conta utilizada pelo pool de aplicações, no caso, Network Service. Como não obtive resultado, procurei por contas relacionadas e adicionei também permissões à IIS_WPG e IIS, e mesmo assim não deu certo.

    A aplicação em si está configurada para autenticação windows (se trata de um recurso em intranet)

    <authentication mode="Windows" />
    <identity impersonate="true"  />

    Enfim, gostaria de saber mais a respeito desse problema e se vocês poderiam me ajudar com ele. Na internet esses casos estão sempre relacionados à liberação de acesso do usuário utilizado pela Pool de Aplicação, como essa liberação não funcionou no meu caso...

    Desde já agradeço, obrigado.

    quinta-feira, 6 de setembro de 2012 19:55

Todas as Respostas

  • Um erro meu, a conta seria Network Service caso eu não estivesse usando impersonate, correto ? Mas como fazer a configuração correta no caso de eu precisar fazer o uso do impersonate ? Faço uso de pedaços de código como por exemplo
    Environment.UserName.ToString()
    para obter o usuário logado, o problema é que quando a aplicação está no servidor e o impersonate não é usado, não consigo obter quem está logado. Caso ele estivesse usando a própria conta, meus testes deveriam ter funcionado, pois a conta com a qual faço os testes possui acesso à pasta com problema, não ?
    quinta-feira, 6 de setembro de 2012 21:05