Domanda

So che questa domanda è stata posta molte volte qui, ma non riesco a trovare una soluzione al mio problema. Sto cercando di salvare l'immagine nella cartella in .NET C# ma ottieni questa eccezione:

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)

Ho dato il pieno controllo a questa cartella (Savehere) a network service e iis_iusrs, ha persino dato il pieno controllo a everyone ma comunque ricevere questa eccezione. Ho provato a dare accesso tramite Explorer e tramite manager IIS, ancora senza fortuna

Lo sto facendo su Windows Server 2008 R2 e IIS 7.5, chi devo dare accesso?

Grazie

È stato utile?

Soluzione

È necessario scoprirlo dal pool di applicazioni per il sito Web qual è l'identità in cui è in esecuzione (per impostazione predefinita questo è Application Pool Identity) e concedere che le autorizzazioni corrette.

Altri suggerimenti

Accesso al percorso 'c: inetpub wwwroot mysite immagini savehere' è negata

Leggi attentamente il messaggio. Stai cercando di salvare in un file che ha lo stesso nome della directory. Non può funzionare, non è possibile sovrascrivere una directory piena di file con un singolo nuovo file. Ciò causerebbe la perdita di dati indesiderabili, "l'accesso al percorso viene negato" è il file system che combatte per evitare che ciò accada.

Il messaggio di eccezione non è l'ideale, ma viene direttamente dal sistema operativo e sono gettati in pietra. Il framework aggiunge spesso ulteriori controlli per generare messaggi migliori, ma questo è un test costoso su una rete. Anche per perf è una caratteristica.

È necessario utilizzare un nome come "C: inetpub wwwroot mysite immagini savehere mumble.jpg". Ritenere Path.combine () generare in modo affidabile il nome del percorso.

Stavo avendo lo stesso problema mentre cercavo di creare un file sul server (in realtà un file che è una copia da un modello).

Ecco il messaggio di errore completo:

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

Ho aggiunto una nuova cartella chiamata Templates All'interno della cartella dell'app IIS. Una cosa molto importante nel mio caso è che avevo bisogno di dare il permesso di scrittura (grave) per l'utente IUSR su quella cartella. Potrebbe anche essere necessario dare Network Service e ASP.NET v$.# lo stesso permesso di scrittura.

enter image description here

Dopo aver fatto tutto ciò funziona come previsto.

Avevo esattamente lo stesso problema.

La soluzione era che il file a cui stavo cercando di accedere era sola lettura, come è stato copiato da un file modello che era lettura.

u003Cfacepalm />

Ho avuto questo problema quando provo a salvare il file senza impostare il nome del file.

Vecchio codice

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

Codice di lavoro

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

Il mio problema era che dovevo chiedere solo l'accesso a lettura:

FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read);

Aggiungi iis_iusers Autorizzazione a controllo completo alla tua cartella. Trovi questa opzione dalla scheda Sicurezza nelle proprietà delle cartelle.find this option and user in this image

Quale identità è il tuo pool di applicazioni per l'applicazione Web in esecuzione come, per risolvere i problemi, prova a creare un nuovo pool di app con dire il servizio di rete come identità e far utilizzare la tua applicazione Web quel nuovo pool di app creato e vedere se l'errore persiste.

Il seguente suggerimento non è Una risposta alla domanda originale di questo thread, ma potrebbe aiutare alcuni altri utenti che finiscono su questa pagina web, dopo aver fatto lo stesso stupido errore che ho appena fatto ...

Stavo tentando di ottenere un controllo FileUpload ASP.NET per caricare il suo file su un indirizzo di rete che conteneva un "condivisione nascosta", vale a dire:

Mynetworkserver c $ SomeDirectoryOrther

Non l'ho capito. Se ho eseguito la pagina web in modalità debug in Visual Studio, funzionerebbe bene. Ma quando il progetto è stato distribuito ed era in esecuzione tramite un utente del pool di applicazioni, si è rifiutato di trovare questa directory di rete.

Avevo controllato quale utente il mio sito IIS era in esecuzione, ho dato a questo utente le autorizzazioni complete a questa directory sulla "Mynetworkserver"Server, ecc. Ecc., Ma niente ha funzionato.

Il motivo (ovviamente!) È che solo gli amministratori sono in grado di "vedere" queste azioni nascoste.

La mia soluzione era semplicemente quella di creare una condivisione "normale"

Mynetworkserver somedirectoryrother

E questo si è sbarazzato dell'errore "Accesso al percorso ... è negato". Il fileupload è stato in grado di eseguire correttamente il comando

fileUpload.SaveAs(networkFilename);

Spero che questo aiuti alcuni altri utenti che commettono lo stesso errore che ho fatto!

Si noti inoltre che se stai caricando file di grandi dimensioni (oltre 4 MB), IIS7 richiede di modificare il file web.config in Due posti. Fai clic su questo link per leggere ciò che devi fare:Caricamento di file di grandi dimensioni in ASP.NET

Ho risolto con questa impostazione:

IIS> Pool di applicazioni> [Il tuo sito]> Impostazioni avanzate ...> Identità> Concotto integrato> LocalSystem

Il mio problema era qualcosa del genere:

FileStream ms = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);

Ma invece di usare il percorso dovrei usare file.fullname ... Non so se aiuterà qualcun altro, passando solo la mia esperienza con questo erro dato!

  1. Modificare l'impostazione dall'account integrato a account personalizzato e inserire il nome utente e la password dell'altro server.

  2. Mantieni l'impostazione come integrato (anziché in modalità classica).

Forse ti aiuta.

string tempDirectoryPath = @"C:\Users\HOPE\Desktop\Test Folder";
string zipFilePath = @"C:\Users\HOPE\Desktop\7za920.zip";
Directory.CreateDirectory(tempDirectoryPath);
ZipFile.ExtractToDirectory(zipFilePath, tempDirectoryPath);

Fare la directory salva essere directory virtuale e dare autorizzazione a lettura/scrittura dal pannello di controllo

Aveva una directory con lo stesso nome del file che stavo cercando di scrivere, in modo che anche le persone possano cercarlo.

Ho riscontrato questo problema mentre mi sono sviluppato sulla mia workstation locale.

Dopo diversi senza successo iisreset invocazioni, ho rimediato questa situazione riavvio la mia macchina.

In retrospettiva, un manico di file aperto potrebbe aver causato problemi.

Nel mio caso ho dovuto aggiungere una regola di autorizzazione .NET per il sito Web in IIS.

Ho aggiunto una regola per consentire agli utenti anonimi.

.NET Authorization Rules

Ho avuto lo stesso problema, ma l'ho risolto salvando il file in una posizione diversa e quindi copiando il file e incollandolo nella posizione in cui volevo che fosse. Ho usato l'opzione per sostituire il file esistente e questo ha fatto il trucco per me. So che questo non è il modo più efficiente ma funziona e richiede meno di 15 secondi.

Ho avuto molti problemi con questo, in particolare correlati al mio codice in esecuzione a livello locale, ma quando avevo bisogno di eseguirlo su IIS stava lanciando questo errore. Ho scoperto che l'aggiunta di un assegno al mio codice e il consentire all'applicazione di creare la cartella al primo posto ha risolto il problema senza dover fare casino con le autorizzazioni delle cartelle.

qualcosa di simile prima di chiamare il tuo metodo che utilizza la cartella

bool exists = System.IO.Directory.Exists("mypath");

        if (!exists)
            System.IO.Directory.CreateDirectory("mypath");

Ho creato una dir virtuale con il massimo autorizzazione e ho aggiunto i file di origine e video FFMPEG, quindi finalmente aveva senso in quanto può essere acesso da chiunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top