Impossibile leggere il file di configurazione a causa di autorizzazioni insufficienti


354

Di recente ho riscontrato un errore nel tentativo di ospitare il mio sito asp.net con IIS. Ho trovato una soluzione che molti giurano.

Soluzione:

  1. Aggiungi IIS_IUSRS con autorizzazione di lettura per i file nella cartella
  2. Cambia il metodo di autenticazione IIS in BasicAuthentication
  3. aggiorna il sito web. Funzionerà

( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )

Cosa devo aggiungere al mio file web.config? Non ho mai dovuto modificarlo prima. Ecco i suoi contenuti attuali:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

Il mio errore è:

Errore di configurazione: impossibile leggere il file di configurazione a causa di autorizzazioni insufficienti
File di configurazione: \? \ C: \ Users ***** \ Documents \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config


9
Vedere il modulo di riscrittura dell'installazione. risparmiati qualche ora
regisbsb

La mia soluzione sarebbe quella di eseguire i comandi dalla riga di comando aperta con privilegi di amministratore. Per fare ciò, trova il prompt dei comandi, fai clic con il pulsante destro del mouse e fai clic su Esegui con privilegi di amministratore.
David Waddington,

Oltre alle altre risposte, si noti che anche la crittografia del filesystem (EFS) può interferire con IIS.
G-Wiz,

Ho fatto questo annuncio ora l'host locale sta chiedendo una password, più vicino sto arrivando così lontano a questo lavoro grazie
Paul Ledger

1
Per me non c'era IIS_IUSR, ho fatto lo stesso per l'utente autenticato e ha funzionato
Bhanu Chhabra

Risposte:


544

Non ci sono problemi con web.config . Il tuo sito web viene eseguito con un processo. In Iis puoi definire l'identità di quel processo. L' identità con cui il pool di applicazioni del tuo sito Web viene eseguito ( Servizi di rete, Sistema locale , ecc.) Deve disporre dell'autorizzazione per accedere e leggere il file web.config.

Aggiornare:

Questa risposta aggiornata è la stessa di cui sopra, ma un po 'più lunga, più semplice e migliorata.

Prima di tutto : non è necessario modificare nulla nel file di configurazione. E 'OK . Il problema è con le autorizzazioni dei file di Windows .

Questo problema si verifica perché l'applicazione non può accedere e leggere il file web.config .

Rendi il file accessibile al gruppo IIS_IUSRS . Basta fare clic con il pulsante destro del mouse su web.config e fare clic su Proprietà , nella scheda Sicurezza , aggiungere IIS_IUSRS .

Cos'è questa cosa IIS_IUSRS?

Il tuo sito web è come un file exe . Proprio come qualsiasi file exe, dovrebbe essere avviato da un utente e viene eseguito in base alle autorizzazioni assegnate a quell'utente.

All'avvio del sito in IIS , il pool di applicazioni del sito Web è associato a un utente ( servizi di rete, sistema locale , ecc.) (E può essere modificato in IIS)

Quindi, quando dici IIS_IUSRS , significa qualsiasi utente ( Servizi di rete, Sistema locale , ecc.) Con cui il tuo sito è in esecuzione.

E come @Seph menzionato nel commento qui sotto : Se il tuo computer è su un dominio , ricorda che il gruppo IIS_IUSRS è un gruppo locale . Inoltre, assicurati che quando cerchi di trovare questo utente, controlla la posizione che dovrebbe essere impostata sul computer locale e non su un dominio aziendale.


79
Per altri, vale la pena sottolineare che di solito è l'impostazione predefinita IIS_IUSRSe assicurarsi che quando si cerca di trovare questo utente, controllare la posizione che dovrebbe essere impostata sul computer locale e non su un dominio aziendale.
Seph

3
Buona risposta, ed ecco un ulteriore suggerimento: eseguendo IIS7 su Win7 in un dominio, potresti non trovare IIS_IUSRS nel gruppo locale se provi a trovare con "Controlla nomi ...". Non preoccuparti: digita IIS_IUSRS per intero e premi OK, e tutto andrà bene.
Guru a otto bit,

2
Cosa succede se si dispone di un'unità condivisa per il percorso di un sito? Questo ha un effetto? Come si fa a funzionare con unità condivise?
Kevin,

2
Ho dovuto farlo per IUSR. IIS_IUSRS non ha funzionato per me per qualche motivo.
Todd,

13
Durante il tentativo di configurare un nuovo sito Web ASP.Net da zero in IIS 7 in poi, dopo aver corretto l'errore in discussione in questo thread, potrebbe essere visualizzato un errore di autorizzazione "Errore HTTP 401.3 - Non autorizzato" come ostacolo successivo. Per risolvere questo problema se hai abilitato l'autenticazione anonima, modifica l'identità dell'utente anonimo da "IUSR" (impostato come predefinito da IIS) all'identità del pool di applicazioni. Per ottenere la finestra di modifica per questa impostazione, utilizzare l'azione "Modifica" dal riquadro Azioni nella vista Funzioni IIS per la funzione IIS "Autenticazione".
RBT,

72

Ho avuto quello che sembrava essere lo stesso problema di autorizzazioni sul web.configfile.
Tuttavia, il mio problema è stato causato dal mancato caricamento del file di configurazione da parte di IIS perché conteneva le regole di riscrittura degli URL e non avevo installato il modulo di riscrittura degli URL IIS sul nuovo server.

Soluzione: installare il modulo di riscrittura.
Spero che salvi qualcuno qualche ora.


Sì. Il server precedente l'ho usato per riscrivere la route non ssl su ssl .. tanto per un ottimo messaggio di errore da IIS. error::) +1 Perché invece di richiedere SSL, ho riscritto l'URL su HTTPS in caso di qualcuno collegato senza https. Che enigma.
Piotr Kula,

grazie!!! sto perdendo tempo con i permessi per ore e alla fine è dipeso da questo!
Carl Woodhouse,

Come si fa a installare il modulo di riscrittura URL IIS?
B. Clay Shannon

2
Anche questo era il mio problema - grazie! Per installare il modulo di riscrittura, scaricalo da questa pagina: iis.net/downloads/microsoft/url-rewrite chiudi IIS, installa, riavvia IIS (solo per sicurezza).
Tyler Forsythe,

2
@ B.ClayShannon utilizza il programma di installazione della piattaforma Web, cerca IIS Rewrite
enorl76

64

Nota del redattore: fare ciò che dice questa risposta è PERICOLOSO ! L'account LocalSystem è un ...

Account completamente attendibile, più dell'account amministratore. Non esiste nulla in una singola casella che questo account non può fare e ha il diritto di accedere alla rete come macchina (ciò richiede Active Directory e concedere le autorizzazioni dell'account macchina a qualcosa)


La modifica dell'identità da ApplicationPoolIdentity a LocalSystem ha funzionato;).

Sto usando Win7 64 con IIS 7.5

ulteriori informazioni sull'identità del pool di applicazioni in IIS 7.5 e vinci 7

inserisci qui la descrizione dell'immagine


Risposta utile anche per IIS 6. Ulteriori informazioni su come modificare l'identità del pool di applicazioni sul sito Web Microsoft sono disponibili qui: microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/…
Manuel Alvarez

22
Apportare questa modifica è un rischio per la sicurezza a causa dell'accesso che stai concedendo questo servizio: msdn.microsoft.com/en-us/library/windows/desktop/…
WhiteKnight

Questo sembra essere stato il mio problema qui e la modifica dell'identità del pool di app in LocalSystem ha funzionato come descritto!
Vasily Hall,

21
Sottovalutare questo a causa del gap di sicurezza che questo lascia sul server. Non dovresti MAI eseguire servizi pubblici come IIS con l'account di sistema locale !!!! In pratica stai consegnando le chiavi al regno per chiunque possa hackerare il server. Scherzi a parte, NON FARE QUESTO.
Dimesio,

5
OMG Questa risposta è COSÌ SCORRETTA per la sicurezza. È necessario un intervento di moderazione. Questa è un'idea ORRIBILE. Immagina qualsiasi accesso ai file specificato sul querystring ... boom ... chiunque può LEGGERE web.config e IIS lo servirà felicemente al mondo. NON UTILIZZARE QUESTA RISPOSTA.
enorl76,

47

Ho avuto lo stesso problema quando ho provato a condividere la cartella principale del sito con un altro utente. Alcune cartelle hanno perso il permesso. Quindi ho seguito i passaggi per aggiungere l'autorizzazione al gruppo IIS_IUSRS come suggerito da Afshin Gh. Il problema è che questo gruppo non era disponibile per me. Sto usando Windows 7.

Quello che ho fatto ho appena cambiato alcuni passaggi:

  1. Fare clic con il tasto destro sulla cartella principale (che ha perso l'autorizzazione),
  2. Proprietà => Sicurezza => In "Nome gruppo o utente:",
  3. Fai clic su Modifica ...
  4. Verrà aperta la finestra "Autorizzazione per la cartella".
  5. In "Nomi di gruppo o utente:" premi AGGIUNGI ... btn,
  6. Digita Authen e premi Controlla nomi,
  7. Vedrai il nome completo del gruppo " Utenti autenticati "
  8. Premere ok => applica.
  9. Ciò dovrebbe abilitare nuovamente i privilegi.

Questo ha funzionato per me.


2
Questo ha funzionato per me. Questa dovrebbe essere la risposta accettata. Ho provato gli altri metodi, non funzionano.
GunWanderer,

1
Ho provato che tutte le altre soluzioni non funzioneranno fino a questa.
jenna_3108

1
Ok, penso di avere una spiegazione del perché funziona. Alcuni sviluppatori ospitano il loro codice in C:\ ie C:\Devo C:\Code, ecc. Il gruppo di sicurezza Authenticated Usersviene concesso C:\ e propagato alle cartelle secondarie. Tuttavia, nella C:\Userscartella, questa propagazione si interrompe. Quindi gli sviluppatori come me che ospitano il loro codice all'interno della cartella home devono concedere l'accesso Authenticated Usersa quelle cartelle radice IIS per far funzionare IIS.
Colin,

quando faccio clic su Controlla nomi, mi chiedono le credenziali. Non sono sicuro di quali credenziali utente siano attese qui. Qualcuno può aiutare?
RSB

18

Non devi cambiare nulla nel tuo web.config.

Il problema sono le autorizzazioni del file system. Le tue autorizzazioni sui file non consentono all'utente IIS_IUSRS di accedere a web.config (o probabilmente a nessuno dei file). Modificare le autorizzazioni dei file in Windows per consentire all'account IIS_IUSRS di accedervi.


1
Ho avuto un problema simile. Se qualcuno non riesce a trovare l'utente IIS_IUSRS, controlla la posizione. Il mio era predefinito nel dominio aziendale, quindi non l'ho trovato subito perché ho dimenticato di controllare per vedere dove stava guardando.
jgreep,

@Mystere Man, ho lo stesso problema. Ho cambiato i permessi e poi ho provato. Ancora ottengo lo stesso errore. :(
Rauf

"(o probabilmente uno qualsiasi dei file)" funziona per me, consentendo l'accesso dell'account IIS_IUSRS a web.config non è sufficiente, devo abilitarlo per avere accesso a tutti i file nel sito aiuta.
Tuyen Nguyen,

2
Ho dovuto farlo per IUSR. IIS_IUSRS non ha funzionato per me.
Todd,

Grazie. Ho concesso a "Tutti" l'autorizzazione completa per la cartella dell'app Web e funziona.
Minh Nguyen,

16

Rendere il file accessibile al gruppo IIS_IUSRS . Fare clic con il tasto destro del mouse su web.config, espandere le proprietà e, nella scheda Sicurezza, aggiungere IIS_IUSRS. Concedi al gruppo l'accesso in lettura / scrittura.

Quando il gruppo NON è disponibile, sostituire IIS_IUSRS con ComputerName \ IIS_IUSRS


+1 buon consiglio. La risposta accettata è buona, ma trascura di dire che potrebbe essere necessario aggiungere il nome del tuo computer davanti a "IIS_IUSRS", che è ciò che mi ha fatto passare.
Ralph Lavelle,

Questo ("Quando il gruppo NON è disponibile") aveva le mie speranze, ma anche quando ho anteposto il nome del computer ("IBM-TAMMYFAYEBAKER.platypus.local \ IIS_IUSRS") ottengo ancora lo stesso errore. Ho provato anche il nome completo del computer, ma non lo accetterei nemmeno come utente valido.
B. Clay Shannon

15

Vai alla cartella principale, fai clic con il tasto destro e seleziona Proprietà . Seleziona la scheda Sicurezza , modifica le autorizzazioni e Aggiungi . Fare clic su Avanzate e Trova ora . Selezionare IIS_IUSRS e fare di nuovo clic su OK e OK . Assicurati di avere selezionato Scrivi . Fare clic su OK e nuovamente su OK .

Lavoro fatto!


19
Cosa diavolo è raccomandare l'accesso in scrittura quando Leggi è tutto ciò che serve? / downvoted
TristanK

2
L'unico IIS * che ho è IIS_WPG
B. Clay Shannon

1
@ B.ClayShannon Anche a me. Ho solo IIS_WPG
Fortune il

13

Quando si concedono le autorizzazioni a IIS_IUSRS, è necessario verificare che nella sezione IIS / Autenticazione dell'applicazione Web, le credenziali di autenticazione anonima utilizzino l'identità del pool di applicazioni e non IUSR.

inserisci qui la descrizione dell'immagine


Dove posso trovare questa interfaccia?

Nella scheda Visualizzazione funzionalità dell'applicazione Web: Autenticazione
Carlos

Questa risposta dovrebbe essere parte della causa della risposta accettata senza che sia necessario aggiungere anche IUSR all'elenco di accesso della cartella del sito Web
Laurent S.

7

Per qualche motivo web.config è impostato come di sola lettura. Deseleziona l'opzione di sola lettura del file web.config.


Se la tua autorizzazione è l'accesso completo e ricevi ancora l'errore, questa è la risposta corretta (y).
Vasil Valchev,


4

Ho usato subst per creare una mappatura da D: a C: per mantenere la stessa configurazione degli altri sviluppatori del team. Questo mi ha dato anche gli stessi errori descritti. Rimuovendo questo risolto per me.


3

La soluzione accettata non ha funzionato per me. Uso un repository Git ed è stato clonato nella seguente cartella

c:\users\myusername\source\repos\myWebSite

Ho creato un nuovo sito Web IIS e indicato il percorso. Che non aveva le autorizzazioni iis_iusrs suggerite nella soluzione accettata. Quando ho aggiunto le autorizzazioni non funzionava ancora.

Ha iniziato a funzionare solo quando ho dato le seguenti autorizzazioni al gruppo "Utenti" e l'ereditarietà ha consentito a cascata le autorizzazioni di web.config. Probabilmente avrebbe dovuto applicarlo solo al web.config per ridurre la superficie di attacco.

Domande dell'utente


Aveva esattamente la stessa situazione. Questo ha aiutato.
Roemer,

2

Avevamo un sito Web in esecuzione con un'identità specifica nell'apppool, solo dopo aver dato a quell'utente l'accesso in lettura alla cartella contenente web.config avrebbe funzionato. Lo abbiamo rintracciato dopo aver aggiunto l'utente "tutti" con lettura e tutto ha funzionato bene.


2

Per me l'errore si è verificato durante il debug sul mio computer locale e si è rivelato correlato al web.config di base, che viene avviato da .NET Framework durante la compilazione del sito Web. Il mio file C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config aveva un elemento non riconosciuto (folderLevelBuildProviders). Risolto il problema con l'errore 500.19.

Vedere questo: IIS Manager non può configurare la compilazione .NET su applicazioni .NET 4


2

La modifica dell'identità del modello di processo in LocalSystem ha risolto questo problema per me. Puoi trovare questa impostazione se fai clic con il pulsante destro del mouse sul pool di applicazioni e scegli "Impostazioni avanzate". Sto eseguendo IIS 7.5.


2

Fare clic con il tasto destro su Web.Config => Tab Security => Button Edit => Button Add => Button Advanced => Button Find Now => Nei risultati della ricerca selezionare il proprio gruppo (nel nostro caso "IIS_IUSRS") => Ok => Ok => Ok


2

Questo è successo a noi quando l' applicazione IIS ha una directory virtuale con un percorso fisico che contiene barre /rovesciate anziché barre rovesciate \. Ciò è stato fatto accidentalmente utilizzando un'API di gestione PowerShell per IIS durante il nostro processo di consegna continua.

Esempio di configurazione errata - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>

Assicurarsi che l' physicalPathattributo non contenga barre /rovesciate, ma solo barre rovesciate\

Esempio di configurazione corretta - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>

1
Nel mio caso il percorso fisico ha avuto una doppia barra posteriore, ad es C:\inetpub\MySite\\MyService. Cambiarlo in una singola barra rovesciata ha funzionato
Ben Anderson il

2

Ho risolto questo problema aggiungendo l'autorizzazione di lettura alla cartella per l'utente del pool di applicazioni (WIN SERVER 2008 R2): C: \ Windows \ System32 \ inetsrv \ config

Un po 'di storia: il nostro server è stato violato con un errore classico in cui l'utente dell'app aveva più autorizzazioni di quanto dovrebbe (amministratore locale).

Per risolverlo abbiamo creato un nuovo utente di dominio che aveva solo le autorizzazioni per la cartella dell'applicazione, con i diritti minimi necessari e assegnato come utente del pool di applicazioni. di quanto abbiamo riscontrato nel problema e questa era una soluzione ai nostri problemi.


2

Sposta il tuo progetto su un'unità diversa da C: ha funzionato per me con lo stesso errore.


2

Ciò può accadere se l'applicazione si trova in una directory virtuale e il percorso dei file è un'unità mappata.

Se cambi il percorso dei file in un'unità locale, questo lo risolverà, se questo è davvero il tuo problema.


2

Tutte le risposte fornite sono valide e funzionano in circostanze diverse.

Per me, riavviare Visual Studio ha funzionato.


1

Stavo anche ricevendo il "Impossibile leggere il file di configurazione a causa di autorizzazioni insufficienti". Risulta che le restrizioni ISAPI e CGI in IIS sia per ASP.NET 4.0 a 32 bit che a 64 bit sono state impostate per negare. Contrassegnandoli entrambi su Consentito risolto il mio problema.


1

Le risposte di cui sopra sono state utili, ma nel caso in cui ciò aiuti chiunque - ho avuto questo esatto problema, e ho scoperto che stavo condividendo la cartella principale da cui era ospitato il sito (rete di Windows). Abbiamo eliminato la condivisione e aggiunto l'autorizzazione degli utenti a leggere / eseguire e ha funzionato di nuovo bene.

Sospetto che la condivisione sia incasinata.


0

Ho avuto questo problema con un'applicazione virtuale. Sono state impostate tutte le autorizzazioni. IIS_IUSRS, AppPoolIdentity e quindi ha dato pieno accesso a Tutti. Niente ha funzionato. Apppool riavviato, sito e IIS, ma non andare.

Eliminata l'applicazione virtuale, aggiunta di nuovo da zero e ha iniziato a funzionare.

Vorrei sapere cosa l'ha risolto.


0

controlla se il file non è contrassegnato come di sola lettura , nonostante l'autorizzazione IIS_IUSRS visualizzerà lo stesso messaggio.


0

Ho ricevuto questo messaggio di errore che si è rivelato dovuto alla posizione della mia cartella fisica su un'unità di rete anziché all'unità locale. Sembra che le autorizzazioni su tali unità per impostazione predefinita possano essere diverse. Ad esempio, mentre l'ubicazione dell'unità locale ha autorizzato gli utenti del computer locale, l'ubicazione della rete no.

Inoltre, la risposta accettata non funziona in questo caso. Gli utenti locali o gli utenti IIS non erano disponibili a cui assegnare le autorizzazioni. La soluzione era spostare la cartella fisica sull'unità locale.


0

Ho avuto lo stesso problema e dopo aver fatto tutte le cose scritte qui come risposte, è ancora riprodotto. La seconda metà del problema era il fatto che .NET era disattivato in "Attiva o disattiva le funzionalità di Windows"


0

A volte, se si tratta di un nuovo server, è necessario configurare o installare la funzionalità ASP.NET su IIS affinché sia ​​in grado di leggere il file web.config.

Nel mio caso questa era la ragione.


0

Nel mio caso, stavo cercando di ospitare pagine da un'unità mappata (subst). Il problema è che il subst è stato eseguito con il mio account e l'utente IIS non è in grado di vedere la stessa unità


0

Ho dato il permesso e usato ICACLS.exe ma non ha funzionato. Quindi ho cambiato il percorso fisico e ha funzionato con successo.

(IIS 8.5 windows 2012 R2)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.