Sto eseguendo un pezzo di codice all'interno di una pagina Web che interroga il metabase di IIS utilizzando ADSI. Il codice è semplice come questo:DefaultAppPool viene eseguito con privilegi speciali elevati su IIS?
DirectoryEntry iisNode =
new DirectoryEntry("/LM/W3SVC/1/ROOT/MyAspWebsite-1-128886021498831845");
foreach (DirectoryEntry de in iisNode.Parent.Children)
{
System.Console.WriteLine(de.Name);
}
Questo funziona bene quando faccio funzionare la pagina/sito sotto la DefaultAppPool su IIS7/W2K8. Tuttavia quando creo la mia propria piscina app e lascio le proprietà lo stesso come il pool di app di default, questo codice non riesce con il seguente errore:
Caught: System.Runtime.InteropServices.COMException
Failed to parse virtual directory:
/LM/W3SVC/1/ROOT/MyAspWebsite-1-128889542757187500
System.Runtime.InteropServices.COMException (0x80070005): Access is denied.
Quali privilegi speciale fa il DefaultAppPool ha? Non vedo alcun documento. Ho bisogno che funzioni nei pool di app non predefiniti, ma senza dando all'intero processo di lavoro privilegi elevati. Ho anche provato a utilizzare i parametri username e password del costruttore DirectoryEntry, utilizzando l'Admin sul computer su cui IIS7 è in esecuzione, ma che non ha modificato nulla. Noterò anche che questo funziona fine su IIS6 e W2K3.
Qualsiasi aiuto è apprezzato.
sei sicuro che entrambi i pool di applicazioni siano in esecuzione con la stessa identità? – kemiller2002
Sì, se si guarda in Process Explorer, entrambi vengono eseguiti come NT AUTHORITY \ NETWORK SERVICE ed entrambi hanno un'integrità di "System". Se si guarda la scheda Sicurezza in Process Explorer per la proprietà avanzata di entrambe le istanze di w3wp.exe, appartengono allo stesso set di gruppi con una sola differenza, DefaultAppPool fa parte del gruppo APPPOOL \ DefaultAppPool di IIS, e il pool di app personalizzato appartiene al gruppo APPPOOL \ CustomAppPool di IIS. –
Quando dici di aver creato il tuo app-pool, stai semplicemente creando un nuovo pool di app e aggiungendo la tua app esistente e non funziona? Oppure stai creando un SITO completamente nuovo (e quindi un'app sulla radice forse) associato al nuovo pool di app? Forse il problema del permesso è dovuto al tuo riferimento all'ID sito 1 nel tuo percorso/LM/W3SVC/1/ROOT ...? – Aaron