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.
Questa pagina descrive alcuni problemi comuni che possono verificarsi quando si distribuisce un'applicazione Web ASP.NET tramite Visual Studio. Per ognuno di essi vengono fornite una o più possibili cause e le soluzioni corrispondenti.
Gli scenari mostrati si applicano sia ai provider di hosting di Azure che a provider di hosting di terze parti. Per altre informazioni sulla risoluzione dei problemi relativi alle app Web nel servizio app di Azure, vedere le risorse seguenti:
- Risoluzione dei problemi di un'app Web nel servizio app di Azure tramite Visual Studio
- Monitorare le app Web nel servizio app di Azure
- Annuncio del rilascio di Windows Azure SDK 2.0 per .NET (blog di ScottGu, illustra come ottenere i log di diagnostica in Visual Studio)
Errore del server nell'applicazione '/': le impostazioni di errore personalizzate correnti impediscono la visualizzazione remota dell'errore
Scenario
Dopo aver distribuito un sito in un host remoto, viene visualizzato un messaggio di errore che indica l'impostazione customErrors nel file Web.config, ma non indica la causa effettiva dell'errore:
Server Error in '/' Application.
Runtime Error
Description: An application error occurred on the server. The current custom error settings
for this application prevent the details of the application error from being viewed remotely
(for security reasons). It could, however, be viewed by browsers running on the local server
machine.
Details: To enable the details of this specific error message to be viewable on remote machines,
please create a <customErrors> tag within a "web.config" configuration file located in the
root directory of the current web application. This <customErrors> tag should then have its
"mode" attribute set to "Off".
Possibile causa e soluzione
Per impostazione predefinita, ASP.NET mostra informazioni dettagliate sull'errore solo quando l'applicazione Web è in esecuzione nel computer locale. In genere non si vogliono visualizzare informazioni dettagliate sugli errori quando l'applicazione Web è disponibile pubblicamente su Internet, perché gli hacker potrebbero essere in grado di usare queste informazioni per trovare vulnerabilità nell'applicazione. Tuttavia, quando si distribuisce un sito o si aggiorna in un sito, a volte si verifica un problema e è necessario ottenere il messaggio di errore effettivo.
Per consentire all'applicazione di visualizzare messaggi di errore dettagliati quando viene eseguito nell'host remoto, modificare il file Web.config per impostare la modalità customErrors disattivata, ridistribuire l'applicazione ed eseguire di nuovo l'applicazione:
Se l'applicazione Web.config file dispone di un elemento customErrors nell'elemento system.web, modificare l'attributo mode su "off". In caso contrario, aggiungere un elemento customErrors nell'elemento system.web con l'attributo mode impostato su "off", come illustrato nell'esempio seguente:
<configuration> <system.web> <customErrors mode="off"/> </system.web> </configuration>Distribuire l'applicazione.
Eseguire l'applicazione e ripetere qualsiasi operazione eseguita in precedenza che ha causato l'errore. È ora possibile visualizzare il messaggio di errore effettivo.
Dopo aver risolto l'errore, ripristinare l'impostazione customErrors originale e ridistribuire l'applicazione.
Impossibile creare o copiare shadow 'ContosoUniversity' se il file esiste già.
Scenario
Quando si tenta di eseguire un progetto in Visual Studio, viene visualizzata una pagina di errore con un messaggio simile all'esempio seguente:
Errore del server nell'applicazione '/'. Impossibile creare/shadow copy 'ContosoUniversity' se quel file esiste già.
Possibile causa e soluzione
Attendere un minuto e aggiornare il browser oppure ricompilare il sito e riprovare a eseguirlo.
Accesso negato in una pagina Web che usa SQL Server Compact
Scenario
Quando si distribuisce un sito che usa SQL Server Compact ed è stata eseguita una pagina nel sito distribuito che accede al database, viene visualizzato il messaggio di errore seguente:
Accesso negato. (Eccezione da HRESULT: 0x80070005 (E_ACCESSDENIED))
Possibile causa e soluzione
L'account SERVIZIO DI RETE nel server deve essere in grado di leggere i file binari nativi di SQL Service Compact presenti nella cartella bin\amd64 o bin\x86 , ma non dispone delle autorizzazioni di lettura per tali cartelle. Impostare l'autorizzazione di lettura per NETWORK SERVICE nella cartella bin , assicurandosi di estendere le autorizzazioni alle sottocartelle.
Impossibile leggere il file di configurazione a causa di autorizzazioni insufficienti
Scenario
Quando si fa clic sul pulsante Pubblica di Visual Studio per distribuire un'applicazione in IIS nel computer locale, la pubblicazione ha esito negativo e nella finestra Output viene visualizzato un messaggio di errore simile al seguente:
Errore durante la lettura del file di configurazione IIS 'MACHINE/REDIRECTION'. L'identità che esegue questa operazione era ... Errore: impossibile leggere il file di configurazione a causa di autorizzazioni insufficienti.
Possibile causa e soluzione
Per usare la pubblicazione con un clic in IIS nel computer locale, è necessario eseguire Visual Studio con autorizzazioni di amministratore. Chiudere Visual Studio e riavviarlo con le autorizzazioni di amministratore.
Impossibile connettersi al computer di destinazione... Utilizzo del processo specificato
Scenario
Quando si fa clic sul pulsante Pubblica di Visual Studio per distribuire un'applicazione, la pubblicazione non riesce e nella finestra Output viene visualizzato un messaggio di errore simile al seguente:
Web deployment task failed.(Could not connect to the destination computer ("<server URL>") using the specified process
("The Web Management Service"). This can happen if a proxy server is interrupting communication with the destination server.
Disable the proxy server and try again.) ... The remote server returned an error: (502) Bad Gateway.
Possibile causa e soluzione
Un server proxy interrompe la comunicazione con il server di destinazione. Nel Pannello di controllo di Windows o in Internet Explorer selezionare Opzioni Internet e selezionare la scheda Connessioni . Nella finestra di dialogo Proprietà Internet fare clic su Impostazioni LAN. Nella finestra di dialogo Impostazioni rete locale (LAN) deselezionare la casella di controllo Rileva automaticamente le impostazioni . Fare quindi di nuovo clic sul pulsante Pubblica.
Se il problema persiste, contattare l'amministratore di sistema per determinare le operazioni che è possibile eseguire con le impostazioni del proxy o del firewall. Il problema si verifica perché Distribuzione Web usa una porta non standard per la distribuzione del servizio di gestione Web (8172); per altre connessioni, Distribuzione Web usa la porta 80. Quando si esegue la distribuzione in un provider di hosting di terze parti, in genere si usa il servizio di gestione Web.
Il pool di applicazioni .NET 4.0 predefinito non esiste
Scenario
Quando si distribuisce un'applicazione che richiede .NET Framework 4, viene visualizzato il messaggio di errore seguente:
Il pool di applicazioni .NET 4.0 predefinito non esiste o non è stato possibile aggiungere l'applicazione. Verificare che ASP.NET 4.0 sia installato in questo computer.
Possibile causa e soluzione
ASP.NET 4 non è installato in IIS. Se il server in cui si esegue la distribuzione è il computer di sviluppo e in cui è installato Visual Studio 2010, ASP.NET 4 è installato nel computer, ma potrebbe non essere installato in IIS. Nel server in cui si esegue la distribuzione aprire un prompt dei comandi con privilegi elevati e installare ASP.NET 4 in IIS eseguendo i comandi seguenti:
cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru
Potrebbe anche essere necessario impostare manualmente la versione .NET Framework del pool di applicazioni predefinito. Per ulteriori informazioni, vedere l'esercitazione Distribuire in IIS come ambiente di test in questa serie di tutorial.
Il formato della stringa di inizializzazione non è conforme alla specifica a partire dall'indice 0.
Scenario
Dopo aver distribuito un'applicazione usando la pubblicazione con un clic, quando si esegue una pagina che accede al database viene visualizzato il messaggio di errore seguente:
Il formato della stringa di inizializzazione non è conforme alla specifica a partire dall'indice 0.
Possibile causa e soluzione
Aprire il file Web.config nel sito distribuito e verificare se i valori della stringa di connessione iniziano con $(ReplaceableToken_, come nell'esempio seguente:
<connectionStrings>
<add name="DefaultConnection" connectionString="$(ReplaceableToken_DefaultConnection-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
<add name="SchoolContext" connectionString="$(ReplaceableToken_SchoolContext-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
Se le stringhe di connessione sono simili a questo esempio, modificare il file di progetto e aggiungere la proprietà seguente all'elemento PropertyGroup per tutte le configurazioni di compilazione:
<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>
Ridistribuire quindi l'applicazione.
Errore interno del server HTTP 500
Scenario
Quando si esegue il sito distribuito, viene visualizzato il messaggio di errore seguente senza informazioni specifiche che indicano la causa dell'errore:
Errore HTTP 500 - Errore interno del server.
Possibile causa e soluzione
Ci sono molte cause di 500 errori, ma una possibile causa se si seguono queste esercitazioni è che si inserisce un elemento XML nella posizione errata in uno dei file di trasformazione Web.config. Ad esempio, si otterrebbe questo errore se si inserisce la trasformazione che inserisce un <elemento location> in <system.web> anziché direttamente nella <configurazione>. È possibile usare la funzionalità di anteprima della trasformazione Web.config per verificare che le trasformazioni funzionino come previsto. Se si trova una trasformazione codificata in modo errato, la soluzione consiste nel correggere il file di trasformazione e ridistribuire. Se un errore non è ovvio, provare a impostare come commento le trasformazioni e la ridistribuzione per vedere quale causa l'errore 500.
Errore interno del server HTTP 500.21
Scenario
Quando si esegue il sito distribuito, viene visualizzato il messaggio di errore seguente:
Errore HTTP 500.21 - Errore interno del server. Il gestore "PageHandlerFactory-Integrated" ha un modulo non valido "ManagedPipelineHandler" nell'elenco dei moduli.
Possibile causa e soluzione
Il sito che hai distribuito è destinato a ASP.NET 4, ma ASP.NET 4 non è registrato in IIS sul server. Nel server aprire un prompt dei comandi con privilegi elevati e registrare ASP.NET 4 eseguendo i comandi seguenti:
cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru
Potrebbe anche essere necessario impostare manualmente la versione .NET Framework del pool di applicazioni predefinito. Per ulteriori informazioni, vedere l'esercitazione sulla distribuzione in IIS come ambiente di test in questa serie.
Accesso non riuscito durante l'apertura del database SQL Server Express in App_Data
Scenario
È stata aggiornata la stringa di connessione file Web.config in modo che punti a un database SQL Server Express come file di .mdf nella cartella App_Data e la prima volta che si esegue l'applicazione viene visualizzato il messaggio di errore seguente:
System.Data.SqlClient.SqlException: impossibile aprire il database "DatabaseName" richiesto dall'account di accesso. Accesso non riuscito.
Possibile causa e soluzione
Il nome del file di .mdf non può corrispondere al nome di qualsiasi database SQL Server Express mai esistente nel computer, anche se è stato eliminato il file .mdf del database esistente in precedenza. Modificare il nome del file di .mdf in un nome che non è mai stato usato come nome del database e modificare il file Web.config in modo da usare il nuovo nome. In alternativa, è possibile usare SQL Server Management Studio Express per eliminare i database SQL Server Express esistenti in precedenza.
Impossibile verificare la compatibilità dei modelli
Scenario
È stata aggiornata la stringa di connessione fileWeb.config in modo che punti a un nuovo database SQL Server Express e la prima volta che si esegue l'applicazione viene visualizzato il messaggio di errore seguente:
Impossibile verificare la compatibilità del modello perché il database non contiene metadati del modello. Assicurarsi che IncludeMetadataConvention sia stato aggiunto alle convenzioni DbModelBuilder.
Possibile causa e soluzione
Se il nome del database inserito nel file di Web.config è stato usato in precedenza nel computer, è possibile che nel computer esista già un database con alcune tabelle. Selezionare un nuovo nome che non è stato usato nel computer in precedenza e modificare il fileWeb.config in modo che punti a usare questo nuovo nome di database. In alternativa, è possibile usare l'utilità SQL Server Express o SQL Server Management Studio Express per eliminare il database esistente.
Errore SQL quando uno script tenta di creare utenti o ruoli
Scenario
Si usa la distribuzione del database configurata nella scheda Pacchetto/Pubblica SQL , gli script SQL eseguiti durante la distribuzione includono i comandi Crea utente o Crea ruolo e l'esecuzione di script non riesce quando questi comandi vengono eseguiti. Potrebbero essere visualizzati messaggi più dettagliati, ad esempio i seguenti:
The approximate location of the error was between lines '1' and '3' of the script.
The verbose log may have more information about the error. The command started with:
CREATE USER [user2] FOR LOGIN [user2] WITH DEFAULT
Error: User does not have permission to perform this action.
Se questo errore si verifica quando è stato configurato il deployment del database nella procedura guidata di pubblicazione Web anziché nella scheda Pacchetto/Pubblicazione SQL, creare un thread nel forum Configurazione e Distribuzione e la soluzione verrà aggiunta a questa pagina di troubleshooting.
Possibile causa e soluzione
L'account utente usato per eseguire la distribuzione non dispone dell'autorizzazione per creare utenti o ruoli. Ad esempio, l'azienda di hosting potrebbe assegnare i ruoli db_datareader, db_datawriter e db_ddladmin all'account utente configurato automaticamente. Sono sufficienti per la creazione della maggior parte degli oggetti di database, ma non per la creazione di utenti o ruoli. Un modo per evitare l'errore consiste nell'escludere utenti e ruoli dalla distribuzione del database. A tale scopo, è possibile modificare l'elemento PreSource per lo script generato automaticamente del database in modo che includa gli attributi seguenti:
CopyAllUsers=false, CopyAllRoles=false
Per informazioni su come modificare l'elemento PreSource nel file di progetto, vedere Procedura: Modificare le impostazioni di distribuzione nel file di progetto. Se gli utenti o i ruoli nel database di sviluppo devono trovarsi nel database di destinazione, contattare il provider di hosting per assistenza.
Errore di timeout di SQL Server durante l'esecuzione di script personalizzati durante la distribuzione
Scenario
Sono stati specificati script SQL personalizzati da eseguire durante la distribuzione, e quando Web Deploy li esegue, si verificano timeout.
Possibile causa e soluzione
L'esecuzione di più script con modalità di transazione diverse può causare errori di timeout. Per impostazione predefinita, gli script generati automaticamente vengono eseguiti in una transazione, ma gli script personalizzati non lo fanno. Se si seleziona l'opzione Pull dei dati e/o dello schema da un database esistente nella scheda Pacchetto/Pubblica SQL e se si aggiunge uno script SQL personalizzato, è necessario modificare le impostazioni delle transazioni in alcuni script in modo che tutti gli script usino le stesse impostazioni di transazione. Per altre informazioni, vedere Procedura: Distribuire un database con un progetto di applicazione Web.
Se sono state configurate le impostazioni delle transazioni in modo che tutti siano uguali ma si verifichi comunque questo errore, una possibile soluzione alternativa consiste nell'eseguire gli script separatamente. Nella griglia Script di database della scheda Package/Publish SQL deselezionare la casella di controllo Includi per lo script che causa l'errore di timeout, quindi pubblicare il progetto. Tornare quindi alla griglia Script di database, selezionare la casella di controllo Includi dello script e deselezionare le caselle di controllo Includi degli altri script. Quindi pubblicare di nuovo il progetto. Questa volta che si pubblica, viene eseguito solo lo script personalizzato selezionato.
I dati di streaming del manifesto del sito non sono ancora disponibili
Scenario
Quando si installa un pacchetto usando il file deploy.cmd con l'opzione t (test), viene visualizzato il messaggio di errore seguente:
Errore: i dati del flusso di 'sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript' non sono ancora disponibili.
Possibile causa e soluzione
Il messaggio di errore indica che il comando non può produrre un report di test. Tuttavia, il comando potrebbe essere eseguito se si usa l'opzione y (installazione effettiva). Il messaggio indica solo che si è verificato un problema con l'esecuzione del comando in modalità test.
Questa applicazione richiede ManagedRuntimeVersion v4.0
Scenario
Quando si tenta di eseguire la distribuzione, viene visualizzato il messaggio di errore seguente:
Il pool di applicazioni che si sta tentando di usare ha la proprietà 'managedRuntimeVersion' impostata su 'v2.0'. Questa applicazione richiede 'v4.0'.
Possibile causa e soluzione
ASP.NET 4 non è installato in IIS. Se il server in cui si esegue la distribuzione è il computer di sviluppo e in cui è installato Visual Studio 2010, ASP.NET 4 è installato nel computer, ma potrebbe non essere installato in IIS. Nel server in cui si esegue la distribuzione aprire un prompt dei comandi con privilegi elevati e installare ASP.NET 4 in IIS eseguendo i comandi seguenti:
cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –i
Impossibile eseguire il cast di Microsoft.Web.Deployment.DeploymentProviderOptions
Scenario
Quando si distribuisce un pacchetto, viene visualizzato il messaggio di errore seguente:
Impossibile eseguire il cast dell'oggetto di tipo 'Microsoft.Web.Deployment.DeploymentProviderOptions' su 'Microsoft.Web.Deployment.DeploymentProviderOptions'.
Possibile causa e soluzione
Si sta tentando di eseguire la distribuzione da Gestione IIS usando l'interfaccia utente distribuzione Web 1.1 in un server in cui è installato Web Deploy 2.0. Se si usa lo strumento di amministrazione remota IIS per la distribuzione importando un pacchetto, selezionare la finestra di dialogo Nuove funzionalità disponibili quando si stabilisce la connessione. Questa finestra di dialogo potrebbe essere visualizzata una sola volta quando la connessione viene stabilita per la prima volta. Per cancellare la connessione e ricominciare, chiudere Gestione IIS e riavviarla immettendo inetmgr /reset al prompt dei comandi. Se una delle funzionalità elencate è Web Deploy UI e ha un numero di versione inferiore a 8, il server in cui si esegue la distribuzione potrebbe avere entrambe le versioni 1.1 e 2.0 di Distribuzione Web installate. Per eseguire la distribuzione da un client in cui è installata la versione 2.0, il server deve avere installato solo Distribuzione Web 2.0. Per risolvere il problema, è necessario contattare il provider di hosting.
Impossibile caricare i componenti nativi di SQL Server Compact
Scenario
Quando si esegue il sito distribuito, viene visualizzato il messaggio di errore seguente:
Impossibile caricare i componenti nativi di SQL Server Compact corrispondenti al provider ADO.NET della versione 8482. Installare la versione corretta di SQL Server Compact. Per altri dettagli, vedere l'articolo della Knowledge Base 974247.
Possibile causa e soluzione
Il sito distribuito non include sottocartelle amd64 e x86 con gli assembly nativi in essi contenuti nella cartella bin dell'applicazione. In un computer in cui è installato SQL Server Compact, gli assembly nativi si trovano in C:\Programmi\Microsoft SQL Server Compact Edition\v4.0\Private. Il modo migliore per ottenere i file corretti nelle cartelle corrette in un progetto di Visual Studio consiste nell'installare il pacchetto NuGet SqlServerCompact. L'installazione del pacchetto aggiunge uno script di post-compilazione per copiare gli assembly nativi in amd64 e x86. Per poter essere distribuiti, tuttavia, è necessario includerli manualmente nel progetto. Per ulteriori informazioni, vedere l'esercitazione sulla distribuzione di SQL Server Compact.
Errore "Percorso non valido" dopo la distribuzione di un'applicazione Code First di Entity Framework
Scenario
Si distribuisce un'applicazione che usa Migrazioni Code First di Entity Framework e dbMS, ad esempio SQL Server Compact, che archivia il database in un file nella cartella App_Data. Le migrazioni Code First sono state configurate per creare il database dopo la tua prima distribuzione. Quando si esegue l'applicazione viene visualizzato un messaggio di errore simile all'esempio seguente:
Il percorso non è valido. Controllare la directory del database. [Path = c:\inetpub\wwwroot\App_Data\DatabaseName.sdf ]
Possibile causa e soluzione
Code First tenta di creare il database, ma la cartella App_Data non esiste. Non sono presenti file nella cartella App_Data quando è stata distribuita oppure è stata selezionata l'opzione Escludi App_Data nella scheda Pacchetto/Pubblica web della finestra Proprietà progetto. Il processo di distribuzione non creerà una cartella nel server se non sono presenti file nella cartella da copiare nel server. Se il database è già stato configurato nel sito, il processo di distribuzione eliminerà i file e la cartella App_Data stessa se si seleziona Rimuovi file aggiuntivi nella destinazione nel profilo di pubblicazione. Per risolvere il problema, inserire un file segnaposto, ad esempio un file di .txt nella cartella App_Data , assicurarsi di non avere l'opzione Escludi App_Data selezionata e ridistribuire.
"Impossibile utilizzare l'oggetto COM separato dal relativo RCW sottostante".
Scenario
È stata usata correttamente la pubblicazione con un clic per distribuire l'applicazione e quindi si inizia a ricevere questo errore:
L'attività di distribuzione Web non è riuscita. Impossibile completare la richiesta all'URL dell'agente remoto '<https://serverurl.com/msdeploy.axd?site=sitename>'.
Impossibile completare la richiesta all'URL dell'agente remoto '<https://url/msdeploy.axd?site=sitename>'.
La richiesta è stata interrotta: la richiesta è stata annullata.
Impossibile utilizzare l'oggetto COM separato dal relativo RCW sottostante.
Possibile causa e soluzione
La chiusura e il riavvio di Visual Studio sono in genere necessari per risolvere questo errore.
La distribuzione ha esito negativo perché le credenziali utente usate per la pubblicazione non hanno l'autorità setACL
Scenario
La pubblicazione ha esito negativo e viene visualizzato un errore che indica che non si dispone dell'autorità per impostare le autorizzazioni per le cartelle (l'account utente in uso non ha l'autorità setACL).
Possibile causa e soluzione
Per impostazione predefinita, Visual Studio imposta le autorizzazioni di lettura per la cartella radice del sito e le autorizzazioni di scrittura per la cartella App_Data. Se si sa che le autorizzazioni predefinite per le cartelle del sito sono corrette e non è necessario impostare questo comportamento, è necessario disabilitare questo comportamento aggiungendo <IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> al file del profilo di pubblicazione (per influire su un singolo profilo) o sul file wpp.targets (per influire su tutti i profili). Per informazioni su come modificare questi file, vedere Procedura: Modificare le impostazioni di distribuzione nei file profilo (con estensione pubxml).
Errori di accesso negato quando l'applicazione tenta di scrivere in una cartella dell'applicazione
Scenario
L'applicazione si verifica un errore quando tenta di creare o di modificare un file in una delle cartelle dell'applicazione, perché non dispone dell'autorizzazione di scrittura per quella cartella.
Possibile causa e soluzione
Per impostazione predefinita, Visual Studio imposta le autorizzazioni di lettura per la cartella radice del sito e le autorizzazioni di scrittura per la cartella App_Data. Se l'applicazione necessita dell'accesso in scrittura a una sottocartella, è possibile impostare le autorizzazioni per tale cartella, come illustrato nelle esercitazioni Impostazione autorizzazioni cartella e distribuzione nell'ambiente di produzione di questa serie. Se l'applicazione deve accedere in scrittura alla cartella radice del sito, è necessario impedirne l'impostazione dell'accesso in sola lettura nella cartella radice aggiungendo <IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> al file del profilo di pubblicazione (per influire su un singolo profilo) o sul file wpp.targets (per influire su tutti i profili). Per informazioni su come modificare questi file, vedere Procedura: Modificare le impostazioni di distribuzione nei file profilo (con estensione pubxml).
Errore di configurazione: l'attributo targetFramework fa riferimento a una versione successiva alla versione installata di .NET Framework
Scenario
È stato pubblicato correttamente un progetto Web destinato ASP.NET 4.5, ma quando si esegue l'applicazione (con la modalità customErrors impostata su "off" nel file Web.config) viene visualizzato l'errore seguente:
L'attributo 'targetFramework' nell'elemento <di compilazione> del file Web.config viene usato solo per la versione 4.0 e successive di .NET Framework (ad esempio, '<compilation targetFramework="4.0">'). L'attributo 'targetFramework' fa attualmente riferimento a una versione successiva alla versione installata di .NET Framework. Specificare una versione di destinazione valida di .NET Framework o installare la versione richiesta di .NET Framework.
La casella Errore di origine della pagina di errore evidenzia la riga seguente da Web.config come causa dell'errore:
<compilation targetFramework="4.5" />
Possibile causa e soluzione
Il server non supporta ASP.NET 4.5. Contattare il provider di hosting per determinare quando e se è possibile aggiungere il supporto per ASP.NET 4.5. Se l'aggiornamento del server non è un'opzione, è necessario distribuire un progetto web finalizzato ad ASP.NET 4 o versioni precedenti.
Se si distribuisce un progetto Web di ASP.NET 4 o versioni precedenti nella stessa destinazione, selezionare la casella di controllo Rimuovi file aggiuntivi nella scheda Impostazioni della procedura guidata Pubblica web . Se non si seleziona Rimuovi file aggiuntivi nella destinazione, si continuerà a visualizzare la pagina Errore di configurazione.
La finestra Proprietà del progetto include un elenco a discesa per il framework di destinazione, ma non è possibile risolvere questo problema semplicemente cambiando il framework da .NET Framework 4.5 a .NET Framework 4. Se si modifica il framework di destinazione in una versione precedente del framework, il progetto avrà comunque riferimenti agli assembly della versione del framework successiva e non verrà eseguito. È necessario modificare manualmente tali riferimenti o creare un nuovo progetto destinato a .NET Framework 4 o versioni precedenti. Per altre informazioni, vedere Destinazione di .NET Framework per siti Web.
Errori di attendibilità media
Scenario
Quando esegui l'applicazione nell'ambiente di produzione, si verifica un errore correlato all'attendibilità intermedia.
Possibile causa e soluzione
Molti provider di hosting di terze parti eseguono il sito Web con attendibilità media, il che significa che non è consentito eseguire alcune operazioni. Ad esempio, il codice dell'applicazione non può accedere al Registro di sistema di Windows e non può leggere o scrivere file esterni alla gerarchia di cartelle dell'applicazione. Per impostazione predefinita, l'applicazione viene eseguita con attendibilità totale nel computer locale, il che significa che l'applicazione potrebbe essere in grado di eseguire operazioni che potrebbero non riuscire durante la distribuzione nell'ambiente di produzione.
È possibile configurare l'applicazione per l'esecuzione con attendibilità media nell'ambiente IIS locale per la risoluzione dei problemi. A tale scopo, aprire l'applicazione Web.config file e aggiungere un elemento trust nell'elemento system.web , come illustrato in questo esempio.
<configuration>
<!-- Settings -->
<system.web>
<trust level="Medium" />
<!-- Settings -->
</system.web>
</configuration>
L'applicazione verrà ora eseguita con attendibilità media in IIS anche nel computer locale.
Non eseguire questa operazione se si esegue la distribuzione nel servizio app di Azure, perché Azure non richiede attendibilità media. Al momento della scrittura di questa esercitazione nel mese di febbraio 2012, l'uso di questo metodo per eseguire l'applicazione con attendibilità media genererà un errore in Azure.
Se si usano migrazioni Code First di Entity Framework e si esegue la distribuzione in un provider di hosting che esegue l'applicazione con attendibilità media, assicurarsi di avere installato la versione 5.0 o successiva. In Entity Framework versione 4.3 le migrazioni richiedono l'attendibilità totale per aggiornare lo schema del database.
Errore HTTP 404.17 non trovato
Scenario
Quando si esegue il sito distribuito nel computer di sviluppo in IIS, viene visualizzato il messaggio di errore seguente che segnala che il server non è in grado di elaborare Default.aspx:
Errore HTTP 404.17 - Non trovato
Il contenuto richiesto sembra essere script e non verrà gestito dal gestore di file statici.
Possibile causa e soluzione
ASP.NET 4.5 potrebbe non essere installato nel computer. Consulta i passaggi nell'esercitazione della serie "Distribuzione in IIS come ambiente di test" che spiega come installare ASP.NET 4.5.