Estou com um problema no qual estou tentando excluir meu arquivo, mas recebo uma exceção.
if (result == "Success")
{
if (FileUpload.HasFile)
{
try
{
File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
string filename = Path.GetFileName(btnFileUpload.FileName);
btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
}
catch (Exception ex)
{
Message(ex.ToString());
}
}
}
Também devo observar que a pasta da qual estou tentando excluir tem controle total dos serviços de rede.
A mensagem de exceção completa é:
System.UnauthorizedAccessException: o acesso ao caminho 'C: \ Usuários \ arquivo \ Documents \ Visual Studio 2008 \ Projetos \ híbrido \ híbrido \ híbrido \ temp_loginimages \ enviromental.jpg' foi negado. em System.IO .__ Error.WinIOError (Int32 errorCode, String maybeFullPath) em System.IO.File.Delete (caminho da String) em hybrid.User_Controls.Imgloader_Add_Edit_Tbl.btnUpdate_Click (remetente do objeto, EventArgs e) em C: \ Users \ gowdyn \ Documents \ Visual Studio 2008 \ Projetos \ híbrido \ híbrido \ Controles do usuário \ Imgloader_Add_Edit_Tbl.ascx.cs: linha 242
Alguma ideia?
fonte
Respostas:
De acordo com o método File.Delete ...
Um
UnauthorizedAccessException
significa uma das quatro coisas:fonte
Path is a directory.
obrigado por esta dica :) Isso me ajudou.Eu também tive o problema, por isso me deparei com este post. Adicionei a seguinte linha de código antes e depois de uma cópia / exclusão.
Excluir
cópia de
fonte
Esse é um problema antigo, mas eu o encontrei enquanto pesquisava. Acontece que estava faltando o componente de nome de arquivo real no caminho para salvar SaveAs ...
fonte
Quando um usuário tenta se conectar ao seu site, o IIS atribui a conexão à conta IUSER_ComputerName , em que ComputerName é o nome do servidor no qual o IIS está sendo executado. Por padrão, o IUSER_ComputerName conta é um membro do grupo Convidados. Este grupo tem restrições de segurança. Tente acessar o IUSER_ComputerName nessa pasta
Aqui está uma resposta muito boa descrita sobre a segurança do IIS
Espero que isto ajude
fonte
Clique com o botão direito do mouse no Visual studio e clique em Executar como Administrador
fonte
Eu recebi o erro porque não percebi que o destino deveria ser um arquivo. Eu tinha uma pasta como o segundo parâmetro (que funciona no cmd). e consegui
Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied.
porque o C #File.Move
quer um arquivo lá, não apenas para o primeiro parâmetro, mas também para o segundo e, portanto, se você colocar um diretório como segundo parâmetro, ele está tentando gravar um arquivo comoc:\crp
quando você tem um diretório chamadoc:\crp
.isso seria incorreto
File.Move(args[0],"c:\\crp");
Então, isso estaria correto
File.Move(args[0],"c:\\crp\\a.a");
O mesmo vale para
File.Copy
fonte
Se este é um site do IIS com problemas, verifique a propriedade Identity das configurações avançadas do pool de aplicativos que o site ou aplicativo usa. Você pode achar que está definido como ApplicationPoolIdentity e, nesse caso, esse é o usuário que precisará acessar o caminho.
Ou você pode seguir o estilo antigo e simplesmente definir a Identidade como Serviço de rede e conceder ao usuário do Serviço de rede acesso ao caminho.
fonte
Você precisa modificar os privilégios da pasta que está tentando excluir de / salvar em. Clique com o botão direito do mouse na pasta que contém e use a guia Segurança para permitir direitos de modificação para o usuário no qual seu aplicativo é executado.
fonte
Eu bati na mesma coisa. Verifique se o arquivo NÃO ESTÁ ESCONDIDO.
fonte
Também enfrentei esse problema quando meu serviço de janela começou a lançar a exceção
Portanto, como solução, verifiquei a conta de usuário associada ao meu serviço, conforme mostrado na captura de tela abaixo
Então, no meu caso, era SERVIÇO DE REDE
E depois foi para as propriedades da pasta para verificar se a conta de usuário associada também existe na guia de permissão. Estava faltando no meu caso e quando o adicionei, ele corrigiu o problema.
Para mais informações, verifique a captura de tela abaixo
fonte
mesmo problema para mim também, eu estava apontando a pasta em vez de arquivo.
portanto, verifique o caminho, forneça o caminho + nome do arquivo
fonte
Verifique as propriedades dos seus arquivos. Se a opção somente leitura estiver marcada, desmarque-a. Esse foi meu problema pessoal com o UnauthorizedAccessException.
fonte
Eu recebi esse erro e o resolvi em apenas um momento. Não sei por que todas as minhas pastas são somente leitura , cancelei a leitura e aplico-a. No entanto, ainda é somente leitura. Então eu mudei o arquivo para a pasta raiz, ele funciona - tão estranho.
fonte
Uma exceção UnauthorizedAccessException é lançada quando o sistema operacional nega acesso devido a um erro de E / S ou de segurança.
Se você estiver tentando acessar um arquivo ou chave do registro, verifique se não é somente leitura .
fonte
Se você estiver usando o BitDefender, há uma boa chance de seus Arquivos Seguros recurso bloquear sua operação. Essa é uma forma de proteção contra Ransomware que vem com algumas de suas versões mais avançadas.
Certifique-se de conceder acesso ao seu aplicativo no BitDefender e tente novamente.
Mais alguns detalhes podem ser encontrados nesta página de suporte do BitDefender .
fonte
Eu tive o mesmo problema em um site recém-movido em um servidor compartilhado. Resolvido através da configuração do painel do host da web (DotNetPanel), true "permitir permissões de gravação". Portanto, se você estiver em um servidor compartilhado antes de revisar todo o código, vale a pena dar uma olhada na configuração do servidor e poupar muito tempo.
fonte
Esteja ciente de que se você estiver tentando alcançar um caminho de pasta compartilhada a partir do seu código, não precisará apenas conceder as permissões adequadas para a pasta física através da guia Segurança. Você também precisa "compartilhar" a pasta com o usuário do pool de aplicativos correspondente através da guia Compartilhar
fonte
Eu estava enfrentando esse erro porque
Às vezes, quando
Combine
o caminho com Nome do arquivo eFileName = ""
Tornar-se
Path Directory
nãofile
é um problema como mencionado acimaentão você deve procurar
FileName
assimfonte
Eu tive o erro exato ao excluir um arquivo. Era um serviço do Windows em execução em uma conta de serviço que não conseguia excluir um documento .pdf de uma pasta compartilhada, embora tivesse controle total da pasta.
O que funcionou para mim foi navegar para a guia Segurança da Pasta compartilhada> Avançado> Compartilhar> Adicionar.
Em seguida, adicionei a conta de serviço ao grupo de administradores, apliquei as alterações e a conta de serviço pôde executar todas as operações em todos os arquivos nessa pasta.
fonte
Para aqueles que tentam criar um aplicativo UWP (Universal Windows), as permissões de arquivo são muito mais restritas e, em geral, são negadas por padrão. Ele também substitui as permissões de usuário do sistema. Você basicamente terá apenas acesso a arquivos em qualquer
Você pode ler mais aqui para obter detalhes => https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions
fonte
No meu caso, o problema era o Norton. Meu programa interno não possui a assinatura digital adequada e, ao tentar excluir um arquivo, deu a UnauthorizedAccessException.
Se você receber uma notificação, poderá lidar com isso a partir daí. No meu caso, não deu uma notificação que eu notei. Então, veja como impedir o Norton de bloquear o programa.
fonte
Eu também enfrentei o mesmo problema ao tentar fazer isso após a implantação no servidor:
Eu concedi permissão no IIS a outro grupo, incluindo o administrador, e meu problema foi resolvido.
fonte
Descobri que esse erro pode ocorrer no DESIGN MODE em vez de? modo de execução ... Se você estiver criando algo como criar um membro da classe que exija acesso a um arquivo .INI ou .HTM (arquivo de configuração, arquivo de ajuda), talvez NÃO queira inicializar o item na declaração, mas inicializá-lo mais tarde em FORM_Load () etc ... Quando você inicializa ... Use uma instrução IF de guarda:
Isso impedirá que o MSVS Designer tente criar um arquivo INI ou HTM quando você estiver no modo de design.
fonte
Tive esse erro quando tentei renomear uma pasta muito rapidamente depois que ela foi movida ou criada.
Um simples
System.Threading.Thread.Sleep(500);
resolveu:fonte
No meu caso particular, eu estava criando e excluindo repetidamente 10000 pastas. Parece-me que o problema estava no fato de que, embora o método
Directory.Delete(path, true)
retorne, o mecanismo do SO subjacente ainda pode estar excluindo os arquivos do disco. E quando estou começando a criar novas pastas imediatamente após a exclusão das antigas, algumas delas ainda estão bloqueadas porque ainda não foram completamente excluídas. E estou recebendo System.UnauthorizedAccessException: "Acesso ao caminho negado".Usar
Thread.Sleep(5000)
depoisDirectory.Delete(path, true)
resolve esse problema. Concordo absolutamente que isso não é seguro e não estou incentivando ninguém a usá-lo. Eu adoraria aqui uma abordagem melhor para resolver esse problema e melhorar minha resposta. Agora, estou apenas dando uma idéia de por que essa exceção pode acontecer.fonte
Primeiro basta verificar o caminho se o caractere de dois pontos (:) estiver ausente ou não após a letra da unidade. Se dois pontos não estiverem faltando, você poderá verificar se a permissão de acesso / gravação é concedida para esse caminho. Eu tive o mesmo problema e estava faltando apenas os dois pontos, a permissão e tudo o mais estava bem.
vai funcionar bem mas,
dará acesso a erro de negação.
fonte
Eu estava tentando usar System.IO.File.OpenWrite (path)
e não funcionou porque eu estava apenas passando o caminho do OpenWrite () para um diretório, mas requer um caminho até o arquivo que você deseja gravar. Portanto, um caminho completo, incluindo o filename.extension no final, precisa ser passado para o OpenWrite para evitar UnauthorizedAccessException
fonte
Também encontrei este post como lidando com o mesmo problema. Parece que o arquivo está em uso e, portanto, não pode gravá-lo. Embora não seja capaz de descobrir, qual processo está sendo usado. Desconectou o outro usuário que estava conectado nessa caixa, não vê nenhum usuário que o esteja mantendo. Algumas dicas rápidas sobre como encontrar o mesmo.
Obrigado, Lakshay (desenvolvedor)
fonte
Para resolver esse problema, sigo a abordagem de Scot Hanselman em Debugging System.UnauthorizedAccessException (geralmente seguida de: Acesso ao caminho negado) , o código com o exemplo é o seguinte:
fonte