ASP.NET distribuzione Web con Visual Studio: Impostazione delle autorizzazioni per le cartelle
di Tom Dykstra
Scaricare il progetto iniziale
Questa serie di esercitazioni illustra come distribuire (pubblicare) un'applicazione Web ASP.NET in Servizio app di Azure App Web o in un provider di hosting di terze parti usando Visual Studio 2012 o Visual Studio 2010. Per informazioni sulla serie, vedere la prima esercitazione della serie.
Panoramica
In questa esercitazione vengono impostate le autorizzazioni per la cartella Elmah nel sito Web distribuito in modo che l'applicazione possa creare file di log in tale cartella.
Quando si testa un'applicazione Web in Visual Studio usando Visual Studio Development Server (Cassini) o IIS Express, l'applicazione viene eseguita con l'identità. Si è probabilmente un amministratore nel computer di sviluppo e si dispone dell'autorità completa per eseguire qualsiasi operazione a qualsiasi file in qualsiasi cartella. Tuttavia, quando un'applicazione viene eseguita in IIS, viene eseguita con l'identità definita per il pool di applicazioni a cui è assegnato il sito. Si tratta in genere di un account definito dal sistema con autorizzazioni limitate. Per impostazione predefinita, dispone delle autorizzazioni di lettura ed esecuzione per i file e le cartelle dell'applicazione Web, ma non ha accesso in scrittura.
Questo diventa un problema se l'applicazione crea o aggiorna i file, che è una necessità comune nelle applicazioni Web. Nell'applicazione Contoso University Elmah crea file XML nella cartella Elmah per salvare i dettagli sugli errori. Anche se non si usa qualcosa come Elmah, il sito potrebbe consentire agli utenti di caricare file o eseguire altre attività che scrivono dati in una cartella nel sito.
Promemoria: se viene visualizzato un messaggio di errore o qualcosa che non funziona durante l'esercitazione, assicurarsi di controllare la pagina di risoluzione dei problemi.
Testare la registrazione e la segnalazione degli errori
Per vedere come l'applicazione non funziona correttamente in IIS (anche se è stata testata in Visual Studio), è possibile generare un errore che normalmente verrebbe registrato da Elmah e quindi aprire il log degli errori Elmah per visualizzare i dettagli. Se Elmah non è riuscito a creare un file XML e archiviare i dettagli dell'errore, viene visualizzato un report di errore vuoto.
Aprire un browser e passare a http://localhost/ContosoUniversity
e quindi richiedere un URL non valido, ad esempio Studentsxxx.aspx. Viene visualizzata una pagina di errore generata dal sistema anziché la pagina GenericErrorPage.aspx perché l'impostazione customErrors
nel file Web.config è "RemoteOnly" ed è in esecuzione IIS in locale:
Eseguire ora Elmah.axd per visualizzare la segnalazione degli errori. Dopo aver eseguito l'accesso con le credenziali dell'account amministratore ("admin" e "devpwd"), viene visualizzata una pagina vuota del log degli errori perché Elmah non è riuscito a creare un file XML nella cartella Elmah :
Impostare l'autorizzazione di scrittura per la cartella Elmah
È possibile impostare manualmente le autorizzazioni per le cartelle oppure renderle parte automatica del processo di distribuzione. Per renderlo automatico è necessario codice MSBuild complesso e poiché è necessario eseguire questa operazione solo la prima volta che si distribuisce, la procedura seguente illustra come eseguire manualmente questa operazione. Per informazioni su come eseguire questa parte del processo di distribuzione, vedere Impostazione delle autorizzazioni per cartelle nella pubblicazione Web nel blog di Sayed Hashimi.
In Esplora file passare a C:\inetpub\wwwroot\ContosoUniversity. Fare clic con il pulsante destro del mouse sulla cartella Elmah , scegliere Proprietà e quindi selezionare la scheda Sicurezza .
Fare clic su Modifica.
Nella finestra di dialogo Autorizzazioni per Elmah selezionare DefaultAppPool e quindi selezionare la casella di controllo Scrivi nella colonna Consenti .
Se defaultAppPool non è presente nell'elenco Nomi utente o gruppo , è probabile che sia stato usato un altro metodo rispetto a quello specificato in questa esercitazione per configurare IIS e ASP.NET 4 nel computer. In tal caso, individuare l'identità usata dal pool di applicazioni assegnato all'applicazione Contoso University e concedere l'autorizzazione di scrittura a tale identità. Vedere i collegamenti sulle identità del pool di applicazioni alla fine di questa esercitazione. Fare clic su OK in entrambe le finestre di dialogo.
Registrazione e segnalazione degli errori di retest
Eseguire il test causando di nuovo un errore nello stesso modo (richiedere un URL non valido) ed eseguire la pagina Log degli errori . Questa volta viene visualizzato l'errore nella pagina.
Riepilogo
Tutte le attività necessarie per il corretto funzionamento di Contoso University in IIS nel computer locale sono state completate. Nell'esercitazione successiva il sito verrà resa disponibile pubblicamente distribuendolo in Azure.
Altre informazioni
In questo esempio, il motivo per cui Elmah non è riuscito a salvare i file di log era abbastanza ovvio. È possibile usare la traccia IIS nei casi in cui la causa del problema non è così ovvia; vedere Risoluzione dei problemi relativi alle richieste non riuscite tramite traccia in IIS 7 nel sito IIS.net.
Per altre informazioni su come concedere le autorizzazioni alle identità del pool di applicazioni, vedere Identità del pool di applicazioni e Contenuto sicuro in IIS tramite ACL del file system nel sito di IIS.net.