2012-04-21 4 views
8

Ho appena installato IIS su Windows XP.L'accesso al percorso 'c: inetpub wwwroot myapp App_Data' è negato

Quando provo ad eseguire un app, ottengo un errore:

Access to the path 'c:\inetpub\wwwroot\myapp\App_Data' is denied. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access to the path 'c:\inetpub\wwwroot\myapp\App_Data' is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error:

Line 70: Protected Sub cmbSettingFiles_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbSettingFiles.SelectedIndexChanged
Line 71: Dim doc As XmlDocument = New XmlDocument()
Line 72: doc.Load(Path.Combine(basePath, cmbSettingFiles.SelectedValue)) Line 74: Dim settingsNode As XmlNode = doc.SelectSingleNode("/settings")

Source File: C:\myapp\install\install.aspx.vb Line: 72

Ho cercato il permesso grata in questo modo:

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Ma l'errore persiste.

Questo ha qualcosa a che fare con il mio codice?

Come posso risolvere questo?

EDIT

ho risolto il problema sulla mia macchina dev, ma sto ancora ottenere l'errore sul mio server web.

Grazie.

+0

Sono l'unico che utilizza il file sulla mia macchina di sviluppo e quando carico il mio server online, succede anche la stessa cosa. – Smith

+0

posso chiedere perché il voto negativo? – Smith

risposta

8

Try to go to App_Data folder property and add ASPNET user with read and write privileges

Rif:
How to assign correct permissions to App_Data folder of WebMail Pro ASP.NET
Permissions on APP_DATA Folder
ASP/ASP.NET Best way to handle write permissions?

Se non risolve il problema quindi controllare se i file XML non sono aperti da un altro thread utilizzando questi file di configurazione .. e fornire qualche maggiori dettagli se persiste ancora.

+0

ciao, puoi aiutarmi a guardare il nuovo errore. sto ottenendo lo stesso errore nel web server – Smith

1

Sei sicuro di voler aggiungere l'utente corretto? Hai controllato per vedere quale utente è impostato per il pool di app delle applicazioni?

Questo errore si verifica anche se non riesce a leggere il file per qualche motivo; come il file è bloccato o utilizzato da un'altra applicazione. Poiché si tratta di un'applicazione Web ASP.NET, è necessario assicurarsi che non si stiano eseguendo azioni che richiedono il blocco del file; a meno che tu non possa garantire che avrai un solo utente alla tua pagina alla volta.

Puoi pubblicare un esempio di come accedi al file? Che tipo di file è? Gli snippet di codice ti aiuteranno a ottenere una risposta più precisa.

4

prendere in considerazione se il file è di sola lettura, allora i parametri supplementari possono aiutare con FileStream

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read)) 
1

ho avuto una situazione simile. Sto usando TFS per il controllo del codice sorgente. Quello che ho trovato è che quando è stato archiviato, ha reso i file in sola lettura. Ciò ha causato l'errore di cui sopra nel mio servizio in cui si stava aprendo lettura/scrittura. Una volta li ho controllati per la modifica. Tutto ha funzionato alla grande. Sto pensando di provare ad aprirli di sola lettura nel servizio. Penso che una volta pubblicati sul server di produzione, questo non è un problema. Solo nell'ambiente di sviluppo. Ho riscontrato problemi simili con i servizi che utilizzano Entity Framework. Se il file .svc è archiviato, non puoi fare aggiornamenti al database tramite EF.

+1

Un motivo in più tra molti non usare TFS ... –

0

Provare a concedere l'autorizzazione all'utente di NETWORK SERVICE.

1

Ho provato ad aggiungere ASP.net v4.0 con tutte le autorizzazioni, aggiungere utente SERVIZIO DI RETE ma niente aiuto. Infine, ha aggiunto il diritto MODIFY dell'utente DefaultAppPool nella cartella App_Data, problema risolto.

+0

Questo ha funzionato anche per me. Un nuovo server e il mio pacchetto di distribuzione non hanno nemmeno creato una cartella app_data. L'ho creato e aggiunto i diritti di modifica a DefaultAppPool – Luke

0

Eseguire Visual Studio con amministratore privilege..This problema è risolto per me ..

Accesso al percorso è negato C: \ inetpub \ wwwroot è negato indica che il sito web di Self Service può accedere a una cartella specifica sul server in cui è installato. Ciò può essere dovuto al fatto che la posizione non esiste o perché l'utente che esegue l'autenticazione non ha alcuna autorizzazione applicata alla scrittura in questa posizione.

0

Un altro motivo potrebbe essere dovuto al fatto che il percorso file è vuoto in cui si sta tentando di scrivere, motivo per cui non è in grado di trovarlo. solo un altro motivo per cui si verifica questo errore.

2

Per quelle di IIS in esecuzione su Windows Server:

Per impostazione predefinita, l'utente IIS non dispone di autorizzazioni di scrittura per la cartella wwwroot. Questo può essere risolto concedendo le autorizzazioni complete all'utente IIS_IUSRS per wwwroot.

  1. Aprire Esplora file e andare a C:/inetpub/
  2. Fare clic destro sul wwwroot e clicca su "Proprietà"
  3. Vai alla scheda Protezione e fare clic su "Modifica ..." per modificare le autorizzazioni
  4. Trovare e selezionare l'utente IIS. Nel mio caso, è stato chiamato IIS_IUSRS ([server name]\IIS_IUSRS).
  5. Seleziona la casella di controllo "Permetti" per tutte le autorizzazioni.