Condividi tramite


ASP.NET distribuzione Web con Visual Studio: Risoluzione dei problemi

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.

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 illustrati si applicano sia ai provider di hosting di Azure che a provider di hosting di terze parti. Per altre informazioni sulla risoluzione dei problemi di app Web in Servizio app di Azure, vedere le risorse seguenti:

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 sugli errori 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 individuare le vulnerabilità nell'applicazione. Tuttavia, quando si distribuisce un sito o si aggiorna in un sito, a volte si verifica un errore e si deve ricevere 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:

  1. Se l'applicazione Web.config file ha un elemento customErrors nell'elemento system.web, impostare 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>
    
  2. Distribuire l'applicazione.

  3. Eseguire l'applicazione e ripetere le operazioni eseguite in precedenza che hanno causato l'errore. È ora possibile visualizzare il messaggio di errore effettivo.

  4. Dopo aver risolto l'errore, ripristinare l'impostazione customErrors originale e ridistribuire l'applicazione.

Impossibile creare/shadow copy '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 il 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 DEL 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:

Si è verificato un 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 ha esito negativo 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. In Windows Pannello di controllo 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 cosa può essere fatto 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 nel 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 di .NET Framework del pool di applicazioni predefinito. Per altre informazioni, vedere l'esercitazione Distribuzione in IIS come ambiente di test in questa serie.

Il formato della stringa di inizializzazione non è conforme alla specifica a partire dall'indice 0.

Scenario

Dopo aver distribuito un'applicazione con un clic di pubblicazione, 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 corrispondente a 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, questo errore viene visualizzato 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 è 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 di destinazione è stato distribuito ASP.NET 4, ma ASP.NET 4 non è registrato in IIS nel 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 di .NET Framework del pool di applicazioni predefinito. Per altre informazioni, vedere l'esercitazione Distribuzione in IIS come ambiente di test in questa serie.

Accesso non riuscito apertura SQL Server Express database in App_Data

Scenario

È stata aggiornata la stringa di connessione del fileWeb.configper puntare a un database SQL Server Express come file con estensione 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 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 con estensione mdf in un nome che non è mai stato usato come nome del database e modificare il file Web.config per usare il nuovo nome. In alternativa, è possibile usare SQL Server Management Studio Express per eliminare i database SQL Server Express esistenti in precedenza.

Impossibile controllare la compatibilità del modello

Scenario

È stata aggiornata la stringa di connessioneWeb.config file per puntare a un nuovo database SQL Server Express e la prima volta che si esegue l'applicazione viene visualizzato il messaggio di errore seguente:

Impossibile controllare 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 è mai stato usato prima nel computer, un database potrebbe già esistere con alcune tabelle. Selezionare un nuovo nome che non è stato usato nel computer prima e modificare il file Web.config in modo che punti a usare questo nuovo nome di database. In alternativa, è possibile usare 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 Package/Publish SQL , gli script SQL eseguiti durante la distribuzione includono i comandi Crea utente o Crea ruolo e l'esecuzione di script non riesce quando vengono eseguiti questi comandi. È possibile che vengano visualizzati messaggi più dettagliati, ad esempio quanto segue:

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 è stata configurata la distribuzione del database nella procedura guidata Pubblica Web anziché nella scheda Package/Publish SQL , creare un thread nel forum Configurazione e distribuzione e la soluzione verrà aggiunta a questa pagina di risoluzione dei problemi.

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. 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 dal 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.

SQL Server errore di timeout durante l'esecuzione di script personalizzati durante la distribuzione

Scenario

Sono stati specificati script SQL personalizzati da eseguire durante la distribuzione e quando vengono eseguiti dalla distribuzione Web, vengono timeout.

Possibile causa e soluzione

L'esecuzione di più script con diverse modalità di transazione può causare errori di timeout. Per impostazione predefinita, gli script generati automaticamente vengono eseguiti in una transazione, ma gli script personalizzati non vengono eseguiti. Se si selezionano i dati pull e/o lo schema da un'opzione di database esistente nella scheda Package/Publish 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 applicazione Web.

Se sono state configurate le impostazioni delle transazioni in modo che tutti siano uguali ma vengano comunque visualizzati questo errore, una possibile soluzione alternativa consiste nell'eseguire separatamente gli script. Nella griglia Script di database nella 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 nella griglia Script di database , selezionare la casella di controllo Includi script e deselezionare le caselle di controllo Includi per gli altri script. Pubblica quindi di nuovo il progetto. Questa volta che si pubblica, viene eseguito solo lo script personalizzato selezionato.

I dati di flusso 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 di 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 verifica un problema con l'esecuzione del comando in modalità test.

Questa applicazione richiede ManagedRuntimeVersion v4.0

Scenario

Quando si tenta di distribuire, 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 distribuito in è il computer di sviluppo e ha installato Visual Studio 2010 in esso, 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 distribuire da Gestione IIS usando l'interfaccia utente Distribuzione Web 1.1 in un server con Distribuzione Web 2.0 installata. 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 solo una volta stabilita la connessione. Per cancellare la connessione e iniziare, chiudere Gestione IIS e avviarlo di nuovo immettendo inetmgr /reset al prompt dei comandi. Se una delle funzionalità elencate è l'interfaccia utente distribuzione Web e ha un numero di versione inferiore a 8, il server in cui si sta distribuiscendo potrebbe avere sia versioni 1.1 che 2.0 di Distribuzione Web installate. Per distribuire da un client installato 2.0, il server deve avere installato solo Distribuzione Web 2.0. È necessario contattare il provider di hosting per risolvere questo problema.

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 corrispondente al provider ADO.NET della versione 8482. Installare la versione corretta di SQL Server Compact. Per altre informazioni, vedere l'articolo della Knowledge Base 974247.

Possibile causa e soluzione

Il sito distribuito non include sottocartelle amd64 e x86 con gli assembly nativi nella cartella bin dell'applicazione. In un computer con SQL Server Compact installato, 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 post-compilazione per copiare gli assembly nativi in amd64 e x86. Per poter essere distribuiti, tuttavia, è necessario includerli manualmente nel progetto. Per altre informazioni, vedere l'esercitazione Distribuzione SQL Server Compact.

Errore "Percorso non valido" dopo la distribuzione di un'applicazione Entity Framework Code First

Scenario

Si distribuisce un'applicazione che usa Migrazioni Code First di Entity Framework e un DATABASEMS, ad esempio SQL Server Compact che archivia il database in un file nella cartella App_Data. È Migrazioni Code First configurato per creare il database dopo la prima distribuzione. Quando si esegue l'applicazione viene visualizzato un messaggio di errore come l'esempio seguente:

Il percorso non è valido. Controllare la directory per il database. [Path = c:\inetpub\wwwroot\App_Data\DatabaseName.sdf ]

Possibile causa e soluzione

Code First sta tentando di creare il database, ma la cartella App_Data non esiste. Non sono presenti file nella cartella App_Data quando è stata distribuita o è stato selezionato Escludi App_Data nella scheda Pacchetto/Pubblicazione Webdell'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 nel sito è già stato configurato il database, il processo di distribuzione eliminerà i file e la cartella App_Data se si seleziona Rimuovi file aggiuntivi alla destinazione nel profilo di pubblicazione. Per risolvere il problema, inserire un file segnaposto, ad esempio un file .txt nella cartella App_Data , assicurarsi di non avere Escludi App_Data selezionato e ridistribuire.

"Impossibile usare l'oggetto COM separato dal relativo RCW sottostante".

Scenario

È stato eseguito correttamente l'uso della pubblicazione con un clic per distribuire l'applicazione e quindi iniziare a ricevere questo errore:

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 usare l'oggetto COM separato dal relativo RCW sottostante.

Possibile causa e soluzione

La chiusura e il riavvio di Visual Studio sono in genere tutti gli elementi necessari per risolvere questo errore.

La distribuzione non riesce perché le credenziali utente usate per la pubblicazione non dispongono dell'autorità setACL

Scenario

La pubblicazione ha esito negativo con 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 nella cartella radice del sito e le autorizzazioni di scrittura nella cartella App_Data. Se si sa che le autorizzazioni predefinite nelle cartelle del sito sono corrette e non è necessario impostare questo comportamento <aggiungendo IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> al file di 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 profile (pubxml).

Errori di accesso negato quando l'applicazione tenta di scrivere in una cartella dell'applicazione

Scenario

L'applicazione si verifica quando tenta di creare o modificare un file in una delle cartelle dell'applicazione, perché non dispone dell'autorità di scrittura per tale cartella.

Possibile causa e soluzione

Per impostazione predefinita, Visual Studio imposta le autorizzazioni di lettura nella cartella radice del sito e le autorizzazioni di scrittura nella cartella App_Data. Se l'applicazione richiede l'accesso in scrittura a una sottocartella, è possibile impostare le autorizzazioni per tale cartella, come illustrato nell'esercitazione Impostazioni autorizzazioni cartelle e distribuzione nell'ambiente di produzione in questa serie. Se l'applicazione deve accedere in scrittura alla cartella radice del sito, è necessario impedire l'impostazione dell'accesso di 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 profile (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 di Web.config) viene visualizzato l'errore seguente:

L'attributo 'targetFramework' nell'elemento <di compilazione> del file di Web.config viene usato solo per la versione 4.0 e successiva di .NET Framework (ad esempio, '<compilazione 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:

<compilazione 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 destinato ASP.NET 4 o versioni precedenti.

Se si distribuisce un progetto Web 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 alla destinazione, si continuerà a ottenere la pagina Errore di configurazione.

Le finestre Proprietà del progetto includono un elenco a discesa Framework di destinazione, ma non è possibile risolvere questo problema modificando il problema 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 si esegue l'applicazione in produzione, viene visualizzato un errore correlato all'attendibilità media.

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 delle cartelle dell'applicazione. Per impostazione predefinita, l'applicazione viene eseguita con attendibilità completa nel computer locale, il che significa che l'applicazione potrebbe essere in grado di eseguire operazioni che potrebbero non riuscire quando si distribuisce in produzione.

È possibile configurare l'applicazione per l'esecuzione in attendibilità media nell'ambiente IIS locale per risolvere i problemi. A tale scopo, aprire il file dell'applicazioneWeb.config 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 in Servizio app di Azure, perché Azure non richiede attendibilità media. Al momento della scrittura di questa esercitazione nel febbraio 2012, l'uso di questo metodo per eseguire l'applicazione in attendibilità media causerà un errore in Azure.

Se si usa Migrazioni Code First di Entity Framework e si sta distribuendo in un provider di hosting che esegue l'applicazione in attendibilità media, assicurarsi di avere installato la versione 5.0 o successiva. In Entity Framework versione 4.3 le migrazioni richiedono attendibilità completa 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 il server non può elaborare Default.aspx:

Errore HTTP 404.17 - Non trovato

Il contenuto richiesto viene visualizzato come script e non verrà servito dal gestore di file statici.

Possibile causa e soluzione

ASP.NET 4.5 potrebbe non essere installato nel computer. Vedere la procedura descritta nell'esercitazione Distribuzione in IIS come ambiente di test in questa serie che illustra come installare ASP.NET 4.5.