Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
di Tom Dykstra
Scaricare il progetto iniziale
Questa serie di esercitazioni illustra come distribuire (pubblicare) un'applicazione Web ASP.NET in App Web del servizio app di Azure 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.
Informazioni generali
In questa esercitazione si impostano 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à. È molto probabile che tu sia un amministratore sul tuo computer di sviluppo e hai l'autorità completa di eseguire qualsiasi operazione su 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 di 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 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 causare 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/ContosoUniversitye 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 di 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 di log degli errori vuota 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. L'esecuzione automatica richiede codice MSBuild complesso e, poiché è necessario eseguire questa operazione solo la prima volta che si esegue la distribuzione, 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 le 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 Gruppi o nomi utente , è 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 ritest.
Testare causando di nuovo un errore nello stesso modo (richiedere un URL non valido) ed eseguire la pagina Log degli errori . Questa volta l'errore viene visualizzato nella pagina.
Sommario
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à reso 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 IIS.net.