ASP.net Ottenere l’errore “Accesso al percorso negato.” Durante il tentativo di caricare file sul mio server Web Windows Server 2008 R2

Ho un’applicazione web asp.net che carica i file in una cartella specifica sul server Web. localmente tutto funziona correttamente, ma quando distribuisco l’applicazione sul server Web, comincio a ricevere l’errore “Accesso al percorso” D: \ Attachments \ myfile.doc “negato”. Ho dato all’utente “IIS AppPool” che l’applicazione è in esecuzione con piena authorization sulla cartella. Ho persino dato a tutti i permessi completi, ma con lo stesso errore.

Ho aggiunto la cartella all’elenco delle eccezioni di Antivirus, ma con lo stesso risultato. Sto iniziando a sospettare che forse Windows Server 2008 R2 abbia bisogno di un trucco per far funzionare il mio caricamento. Apprezzo molto il vostro aiuto.

Grazie

Il tuo account asp.net {MACHINE}\ASPNET non ha accesso in scrittura a quella posizione. Questa è la ragione per cui il suo fallimento.

Considera la possibilità di concedere i diritti di accesso alla risorsa all’id quadro della richiesta ASP.NET.

Fare clic con il tasto destro del mouse sulla cartella di download Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Type ASPNET below "Enter the object name to select" > Click Check Names Selezionare le caselle per l’accesso desiderato ( Full Control ) . Se non funziona, fai lo stesso con il Network Service

Ora questo dovrebbe mostrare il tuo {MACHINENAME}\ASPNET , quindi devi impostare i permessi di scrittura su questo account.

In caso contrario, se l’applicazione sta impersonando tramite , l’identity framework sarà l’utente anonimo (in genere IUSR_MACHINENAME ) o l’utente della richiesta autenticata.


O semplicemente utilizzare la posizione dedicata per la memorizzazione dei file in ASP.NET che è App_Data . Per crearlo, fare clic con il pulsante destro del mouse sul progetto ASP.NET (in Visual Studio) Add > Add ASP.NET Folder > App_Data . Quindi sarai in grado di salvare i dati in questa posizione:

 var path = Server.MapPath("~/App_Data/file.txt"); System.IO.File.WriteAllText(path, "Hello World"); 

Fare clic con il pulsante destro del mouse sulla cartella sul server o sul computer locale e concedere le autorizzazioni complete a

IIS_IUSRS

questo è tutto.

il problema potrebbe essere che il servizio di rete non ha diritti di lettura

salution:

rightclick la tua cartella di upload -> poperty’s -> security -> Modifica -> aggiungi -> digita: NETWORK SERVICE -> check box full control allow-> premi ok o applica

Se qualcuno si imbatte in questo come è il primo risultato in google,

ricorda di specificare anche il nome del file nel metodo SaveAs.

Non funzionerà

 file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation)); 

Hai bisogno di questo:

 filename = Path.GetFileName(file_upload.PostedFile.FileName); file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation + "\\" + filename)); 

Ho assunto che il metodo SaveAs utilizzerà automaticamente il nome del file caricato. Mantenuto errore “Accesso negato”. Non molto descrittivo del problema reale

Ho affrontato questo problema una volta e nel mio caso il soln è quello di chiudere qualsiasi processo nel task manager che utilizza / accede a quel file .

Hai guardato sotto Impostazioni di sicurezza avanzate?

qualcosa come l’immagine qui sotto modifica i permessi della cartella su IIS_IUSRS

inserisci la descrizione dell'immagine qui

So che è tardi per il gioco, ma volevo condividerlo nel caso in cui aiutasse qualcuno.

La tua situazione esatta potrebbe non essere applicabile, tuttavia ho avuto una situazione simile e l’impostazione dell’attributo File è stata utile.

Prova a impostare l’attributo File su Normale:

 var path = Server.MapPath("~/App_Data/file.txt"); File.SetAttributes(path, FileAttributes.Normal); System.IO.File.WriteAllText(path, "Hello World"); 

Spero che questo aiuti qualcuno.

Vai alla cartella principale

Fare clic destro, fare clic su Proprietà

Scegli Tab Sicurezza

Clicca su Modifica

Clicca su Aggiungi

Digita “EveryOne”

Clicca OK

Controlla il pieno controllo

Clicca OK