O acesso ao caminho é negado

Sei que esta pergunta foi feita muitas vezes aqui, mas não consigo encontrar uma solução para o meu problema. Estou a tentar gravar a imagem na pasta em. Net C#, mas obter esta excepção:

Access to the path 'C:\inetpub\wwwroot\mysite\images\savehere' is denied.The error occured at mscorlib because    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, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)

dei o controlo total a esta pasta (savehere) a network service e iis_iusrs, até dei o controlo total a everyone mas ainda assim consegui esta excepção. Eu tentei dar acesso via explorer e via IIS manager, ainda sem sorte

Estou a fazê-lo no Windows server 2008 R2 e IIS 7.5, de quem preciso para dar acesso?

Obrigado.
Author: Leniel Maccaferri, 2011-02-02

18 answers

Você precisa descobrir no pool de aplicativos para o site Qual é a identidade com que ele está executando (por padrão este é Application Pool Identity) e conceder que as permissões corretas.

 79
Author: Oded, 2011-02-02 17:35:26

Acesso ao caminho 'C:\inetpub\wwwroot\mysite\images\savehere' é negado

Leia a mensagem com atenção. Você está tentando salvar para um arquivo que tem o mesmo nome que o diretório. Isso não pode funcionar, você não pode sobrepor um diretório preenchido com arquivos com um único arquivo novo. Isso causaria perda de dados não diagnosticável," o acesso ao caminho é negado " é o sistema de arquivos lutando de volta para evitar que isso aconteça.

A mensagem de excepção não é ideal, mas vem directamente do SO e são lançados em pedra. O framework muitas vezes adiciona verificações extras para gerar mensagens melhores, mas este é um teste caro em uma rede. O Perf também é uma característica.

Tens de usar um nome como 'C:\inetpub\wwwroot\mysite\images\savehere\mumble.jpg'. Considere O Caminho.Combine () para gerar de forma fiável o nome do caminho.

 180
Author: Hans Passant, 2018-03-22 11:27:43

Eu estava tendo o mesmo problema ao tentar criar um arquivo no servidor (na verdade um arquivo que é uma cópia de um modelo).

Aqui está a mensagem de erro completa:

{ERROR} 08/07/2012 22:15:58 - System.UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\SAvE\Templates\Cover.pdf' is denied.

Adicionei uma nova pasta chamada Templates dentro da pasta de aplicações IIS. Uma coisa muito importante no meu caso é que eu precisava dar a permissão de Escrita (Gravar) para o usuário IUSR naquela pasta. Você também pode precisar dar Network Service e ASP.NET v$.# a mesma permissão de Escrita.

enter image description here

Depois de fazer tudo isto funciona como esperado.

 18
Author: Leniel Maccaferri, 2012-08-08 01:44:32
Tive exactamente o mesmo problema.

A solução era que o ficheiro a que eu estava a tentar aceder era readonly , uma vez que foi copiado de um ficheiro modelo que foi lido apenas.

 11
Author: Ruskin, 2012-07-16 16:07:57

Eu tenho este problema quando eu tento salvar o arquivo sem definir o nome do arquivo.

Código Antigo

File.WriteAllBytes(@"E:\Folder", Convert.FromBase64String(Base64String));

Código De Trabalho

File.WriteAllBytes(@"E:\Folder\"+ fileName, Convert.FromBase64String(Base64String));
 6
Author: MarceloBarbosa, 2016-02-10 18:44:28

Qual é a identidade da sua aplicação para a aplicação Web em execução como, para resolver problemas, tente criar um novo App Pool com say Network Service como sua identidade e faça com que a sua aplicação web use o novo App Pool que criou e veja se o erro persiste.

 4
Author: kd7, 2011-02-02 17:35:45

A seguinte dica não é {[4] } uma resposta à pergunta original deste tópico, mas pode ajudar alguns outros utilizadores que acabam nesta página web, depois de cometerem o mesmo erro estúpido que acabei de cometer...

Eu estava a tentar obter um ASP.Net controlo de carregamento do ficheiro para enviar o seu ficheiro para um endereço de rede que continha uma " partilha escondida ", nomeadamente:

\a minha rede trabalha para alguma direcção ou outra

Não percebi. Se eu executar a página web no modo de depuração em Estúdio Visual, funcionaria bem. Mas quando o projeto foi implantado, e estava rodando através de um usuário de Pool de aplicativos, ele se recusou a encontrar este diretório de rede.

Eu tinha verificado em que Utilizador o meu site IIS estava a correr, dado a este utilizador permissões completas para esta pasta no servidor" MyNetworkServer", etc, mas nada funcionou.

A razão (claro!) é que apenas os administradores são capazes de" ver " essas unidades de compartilhamento escondidas. A minha solução era simplesmente ... criar uma partilha" normal " para

\A Minha Rede Trabalha Para Alguma Direcção Ou Outra

E isto livrou-se do "acesso ao caminho"... é negado" erro. O FileUpload foi capaz de executar com sucesso o comando
fileUpload.SaveAs(networkFilename);

Espero que isto ajude outros utilizadores que cometam o mesmo erro que eu !

Note também que se estiver a enviar ficheiros grandes (acima de 4Mb), então o IIS7 requer que modifique a web.ficheiro de configuração em dois locais . Clique neste link para ler o que você basta: A enviar ficheiros grandes ASP.Net

 4
Author: Mike Gledhill, 2011-11-16 12:47:48
O meu problema era ter de pedir apenas acesso de leitura.
FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read);
 4
Author: jesal, 2013-02-26 01:28:33

Por favor adicione a permissão de controlo completo do IIS_ IUSERS à sua pasta. você encontra esta opção na página de segurança nas propriedades da pasta. find this option and user in this image

 4
Author: Ali Rasouli, 2017-08-29 10:14:21

Resolvi com esta configuração:

IIS > Pools de aplicação > [o seu site] > configurações avançadas... > Identidade > accound > LocalSystem

 4
Author: Hossein Ganjyar, 2017-11-21 16:01:17
O meu problema era algo do género:
FileStream ms = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);

Mas em vez de usar o path, devo usar o ficheiro.Nome completo... Não sei se vai ajudar mais alguém, apenas a passar a minha própria experiência com este erro dado!

 2
Author: Tarcísio Luna, 2012-07-24 05:56:11
  1. Muda a configuração da conta incorporada para a conta personalizada e introduz o nome de utilizador e a senha do outro servidor.

  2. Mantenha a configuração como integrada (em vez do modo clássico).

 2
Author: uday, 2014-10-24 15:55:40

Make Directory savehere to be virtual directory and give read/write permission from control panel

 0
Author: Harsh Baid, 2011-02-02 17:37:15

Tinha um directório com o mesmo nome que o ficheiro que eu estava a tentar escrever, para que as pessoas também possam olhar por isso.

 0
Author: Samuel, 2013-04-11 02:50:18
Encontrei este problema ao desenvolver-me no meu posto de trabalho local.

Depois de várias invocações sem sucesso {[[0]}, corrigi esta situação com reiniciar a minha máquina.

Em retrospectiva, uma pega de arquivo aberta pode ter causado problemas.
 0
Author: Jim G., 2013-05-01 16:13:38
No meu caso, tive de adicionar uma regra de autorização.NET para o site do IIS. Adicionei uma regra para permitir utilizadores anónimos.

.NET Authorization Rules

 0
Author: GerardBeckerleg, 2016-02-26 00:40:29
Tive o mesmo problema, mas corrigi-o salvando o ficheiro num local diferente e copiando o ficheiro e colando-o no local onde eu queria que estivesse. Eu usei a opção para substituir o arquivo existente e isso fez o truque para mim. Sei que esta não é a maneira mais eficiente, mas funciona e demora menos de 15 segundos.
 0
Author: Nde Samuel Mbah, 2018-07-27 04:32:26

Eu criei uma dir virtual com permissão total e adicionei os arquivos de código e vídeo ffmpeg lá, então finalmente fez sentido, pois pode ser acessado por qualquer um.

 -1
Author: Kamila, 2013-08-31 19:03:37