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 progetto di applicazione Web ASP.NET che include un database sql Server Compact usando Visual Studio 2012 RC o Visual Studio Express 2012 RC per Web. È anche possibile usare Visual Studio 2010 se si installa l'aggiornamento di pubblicazione Web. Per un'introduzione alla serie, vedere la prima esercitazione della serie.
Per un'esercitazione che illustra le funzionalità di distribuzione introdotte dopo la versione RC di Visual Studio 2012, illustra come distribuire edizioni di SQL Server diverse da SQL Server Compact e illustra come eseguire la distribuzione nelle app Web del servizio app di Azure, vedere ASP.NET distribuzione Web con Visual Studio.
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 il Visual Studio Development Server (Cassini), l'applicazione viene eseguita con le tue credenziali. È 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.
Test della registrazione e della 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. Viene visualizzata una pagina di log degli errori vuota perché Elmah non è riuscito a creare un file XML nella cartella Elmah :
Impostazione dell'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 distribuisce, questa esercitazione illustra solo 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 risorse 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 .
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 Modifica. Nella finestra di dialogo Autorizzazioni per Elmah selezionare DefaultAppPool e quindi selezionare la casella di controllo Scrivi nella colonna Consenti .
Fare clic su OK in entrambe le finestre di dialogo.
Ripetere la registrazione e la segnalazione degli errori
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.
È necessaria anche l'autorizzazione di scrittura per la cartella App_Data perché si dispone di file di database di SQL Server Compact in tale cartella e si vuole essere in grado di aggiornare i dati in tali database. In questo caso, tuttavia, non è necessario eseguire alcuna operazione aggiuntiva perché il processo di distribuzione imposta automaticamente l'autorizzazione di scrittura per la cartella App_Data .
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 un provider di hosting.
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.