Distribuzione di un'applicazione Web ASP.NET con SQL Server Compact tramite Visual Studio o Visual Web Developer: Impostazione delle autorizzazioni per le cartelle - 6 di 12

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 SQL Server diverse da SQL Server Compact e illustra come eseguire la distribuzione in Servizio app di Azure App Web, vedere ASP.NET distribuzione Web con Visual Studio.

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), 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.

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 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/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 Web.config è "RemoteOnly" ed è in esecuzione IIS in locale:

Error_page_Test

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 :

Error_log_page_empty

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. Per renderlo automatico è necessario codice MSBuild complesso e poiché è necessario eseguire questa operazione solo la prima volta che si esegue la distribuzione, questa esercitazione illustra solo come eseguire questa operazione manualmente. 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 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 .

Elmah_folder_Properties_Security_tab

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 Modifica. Nella finestra di dialogo Autorizzazioni per Elmah selezionare DefaultAppPool e quindi selezionare la casella di controllo Scrivi nella colonna Consenti .

Permissions_for_Elmah_dialog_box

Fare clic su OK in entrambe le finestre di dialogo.

Registrazione e segnalazione degli errori di rete

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.

Elmah_Error_Log_page_Test

È necessaria anche l'autorizzazione di scrittura per la cartella App_Data perché sono presenti SQL Server Compact file di database 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à resa 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 di IIS.net.