Risolvere i problemi di ASP.NET Core in IISTroubleshoot ASP.NET Core on IIS

Di Luke LathamBy Luke Latham

In questo articolo vengono fornite istruzioni su come diagnosticare un problema di avvio di un'app ASP.NET Core durante l'hosting con Internet Information Services (IIS).This article provides instructions on how to diagnose an ASP.NET Core app startup issue when hosting with Internet Information Services (IIS). Le informazioni in questo articolo si applicano all'hosting in IIS su Windows Server e Windows Desktop.The information in this article applies to hosting in IIS on Windows Server and Windows Desktop.

In Visual Studio, per impostazione predefinita un progetto ASP.NET Core usa l'hosting in IIS Express durante il debug.In Visual Studio, an ASP.NET Core project defaults to IIS Express hosting during debugging. È possibile risolvere un codice 502.5 - Errore del processo o 500.30 - Errore di avvio che si verifica nel corso del debug in locale usando le indicazioni riportate in questo argomento.A 502.5 - Process Failure or a 500.30 - Start Failure that occurs when debugging locally can be troubleshooted using the advice in this topic.

In Visual Studio, per impostazione predefinita un progetto ASP.NET Core usa l'hosting in IIS Express durante il debug.In Visual Studio, an ASP.NET Core project defaults to IIS Express hosting during debugging. È possibile risolvere un codice 502.5 Errore del processo che si verifica nel corso del debug in locale usando le indicazioni riportate in questo argomento.A 502.5 Process Failure that occurs when debugging locally can be troubleshooted using the advice in this topic.

Altri argomenti sulla risoluzione dei problemi:Additional troubleshooting topics:

Risolvere i problemi di ASP.NET Core in Servizio app di AzureAnche se Servizio app usa il modulo ASP.NET Core e IIS per ospitare le app, vedere l'argomento dedicato per istruzioni specifiche su Servizio app.Risolvere i problemi di ASP.NET Core in Servizio app di Azure Although App Service uses the ASP.NET Core Module and IIS to host apps, see the dedicated topic for instructions specific to App Service.

Gestire gli errori in ASP.NET CoreInformazioni su come gestire gli errori nelle app ASP.NET Core durante lo sviluppo in un sistema locale.Gestire gli errori in ASP.NET Core Discover how to handle errors in ASP.NET Core apps during development on a local system.

Informazioni su come eseguire il debug con Visual Studio Questo argomento presenta le funzionalità del debugger di Visual Studio.Learn to debug using Visual Studio This topic introduces the features of the Visual Studio debugger.

Debug con Visual Studio Code Informazioni sul supporto del debug incorporato in Visual Studio Code.Debugging with Visual Studio Code Learn about the debugging support built into Visual Studio Code.

Errori di avvio delle appApp startup errors

502.5 Errore del processo502.5 Process Failure

Il processo di lavoro ha esito negativo.The worker process fails. L'app non viene avviata.The app doesn't start.

Il modulo ASP.NET Core prova ad avviare il processo dotnet back-end, ma l'avvio non riesce.The ASP.NET Core Module attempts to start the backend dotnet process but it fails to start. In genere è possibile determinare la causa di un errore di avvio del processo dalle voci nel log eventi dell'applicazione e nel log stdout del modulo ASP.NET Core.The cause of a process startup failure can usually be determined from entries in the Application Event Log and the ASP.NET Core Module stdout log.

Una condizione di errore comune è dovuta alla configurazione non corretta dell'app perché come destinazione viene specificata una versione del framework condiviso ASP.NET Core, che non è presente.A common failure condition is the app is misconfigured due to targeting a version of the ASP.NET Core shared framework that isn't present. Controllare le versioni del framework condiviso ASP.NET Core installate nel computer di destinazione.Check which versions of the ASP.NET Core shared framework are installed on the target machine. Il framework condiviso è il set di assembly (file DLL) che vengono installati nel computer e cui fa riferimento un metapacchetto, ad esempio Microsoft.AspNetCore.App.The shared framework is the set of assemblies (.dll files) that are installed on the machine and referenced by a metapackage such as Microsoft.AspNetCore.App. Il riferimento del metapacchetto può specificare una versione minima richiesta.The metapackage reference can specify a minimum required version. Per altre informazioni, vedere The shared framework (Il framework condiviso).For more information, see The shared framework.

La pagina di errore 502.5 Errore del processo viene restituita quando il processo di lavoro ha esito negativo a causa di un errore di configurazione dell'hosting o dell'app:The 502.5 Process Failure error page is returned when a hosting or app misconfiguration causes the worker process to fail:

Finestra del browser con la pagina 502.5 Errore del processo

500.30 Errore di avvio in-process500.30 In-Process Startup Failure

Il processo di lavoro ha esito negativo.The worker process fails. L'app non viene avviata.The app doesn't start.

Il modulo ASP.NET Core prova ad avviare .NET Core CLR In-Process, ma l'avvio non riesce.The ASP.NET Core Module attempts to start the .NET Core CLR in-process, but it fails to start. In genere è possibile determinare la causa di un errore di avvio del processo dalle voci nel log eventi dell'applicazione e nel log stdout del modulo ASP.NET Core.The cause of a process startup failure can usually be determined from entries in the Application Event Log and the ASP.NET Core Module stdout log.

Una condizione di errore comune è dovuta alla configurazione non corretta dell'app perché come destinazione viene specificata una versione del framework condiviso ASP.NET Core, che non è presente.A common failure condition is the app is misconfigured due to targeting a version of the ASP.NET Core shared framework that isn't present. Controllare le versioni del framework condiviso ASP.NET Core installate nel computer di destinazione.Check which versions of the ASP.NET Core shared framework are installed on the target machine.

500.0 Errore di caricamento del gestore in-process500.0 In-Process Handler Load Failure

Il processo di lavoro ha esito negativo.The worker process fails. L'app non viene avviata.The app doesn't start.

Il modulo ASP.NET Core non riesce a trovare .NET Core CLR e trova il gestore richieste In-Process (aspnetcorev2_inprocess.dll).The ASP.NET Core Module fails to find the .NET Core CLR and find the in-process request handler (aspnetcorev2_inprocess.dll). Controllare che:Check that:

500.0 Errore di caricamento del gestore out-of-process500.0 Out-Of-Process Handler Load Failure

Il processo di lavoro ha esito negativo.The worker process fails. L'app non viene avviata.The app doesn't start.

Il modulo ASP.NET Core non riesce a trovare il gestore richieste di hosting out-of-process.The ASP.NET Core Module fails to find the out-of-process hosting request handler. Verificare che aspnetcorev2_outofprocess.dll sia presente in una sottocartella accanto ad aspnetcorev2.dll.Make sure the aspnetcorev2_outofprocess.dll is present in a subfolder next to aspnetcorev2.dll.

500.31 ANCM Failed to Find Native Dependencies (500.31 Il modulo ASP.NET Core non è riuscito a trovare le dipendenze native)500.31 ANCM Failed to Find Native Dependencies

Il processo di lavoro ha esito negativo.The worker process fails. L'app non viene avviata.The app doesn't start.

Il modulo ASP.NET Core prova ad avviare il runtime di .NET Core In-Process, ma l'avvio non riesce.The ASP.NET Core Module attempts to start the .NET Core runtime in-process, but it fails to start. La causa più comune di questo errore di avvio è la mancata installazione del runtime di Microsoft.NETCore.App o di Microsoft.AspNetCore.App.The most common cause of this startup failure is when the Microsoft.NETCore.App or Microsoft.AspNetCore.App runtime isn't installed. Se l'app viene distribuita per ASP.NET Core 3.0 e tale versione non esiste nel computer, si verifica questo errore.If the app is deployed to target ASP.NET Core 3.0 and that version doesn't exist on the machine, this error occurs. Ecco un esempio di messaggio di errore:An example error message follows:

The specified framework 'Microsoft.NETCore.App', version '3.0.0' was not found.
  - The following frameworks were found:
      2.2.1 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview5-27626-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27713-13 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27714-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27723-08 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]

Il messaggio di errore elenca tutte le versioni di .NET Core installate e la versione richiesta dall'app.The error message lists all the installed .NET Core versions and the version requested by the app. Per correggere l'errore, eseguire una delle operazioni seguenti:To fix this error, either:

  • Installare la versione appropriata di .NET Core nel computer.Install the appropriate version of .NET Core on the machine.
  • Modificare l'app in modo che usi una versione di .NET Core presente nel computer.Change the app to target a version of .NET Core that's present on the machine.
  • Pubblicare l'app come distribuzione autonoma.Publish the app as a self-contained deployment.

Durante l'esecuzione in fase di sviluppo (con la variabile di ambiente ASPNETCORE_ENVIRONMENT impostata su Development), l'errore specifico viene scritto nella risposta HTTP.When running in development (the ASPNETCORE_ENVIRONMENT environment variable is set to Development), the specific error is written to the HTTP response. La causa di un errore di avvio del processo è disponibile anche nel log eventi dell'applicazione.The cause of a process startup failure is also found in the Application Event Log.

500.32 ANCM Failed to Load dll (500.32 Il modulo ASP.NET Core non è riuscito a caricare la DLL)500.32 ANCM Failed to Load dll

Il processo di lavoro ha esito negativo.The worker process fails. L'app non viene avviata.The app doesn't start.

La causa più comune di questo errore è la pubblicazione dell'app per processori con architettura non compatibile.The most common cause for this error is that the app is published for an incompatible processor architecture. Se il processo di lavoro è in esecuzione come app a 32 bit e l'app è stata pubblicata per un'architettura a 64 bit, si verifica questo errore.If the worker process is running as a 32-bit app and the app was published to target 64-bit, this error occurs.

Per correggere l'errore, eseguire una delle operazioni seguenti:To fix this error, either:

500.33 ANCM Request Handler Load Failure (500.33 Errore di caricamento del gestore della richiesta del modulo ASP.Net Core)500.33 ANCM Request Handler Load Failure

Il processo di lavoro ha esito negativo.The worker process fails. L'app non viene avviata.The app doesn't start.

L'app non fa riferimento al framework Microsoft.AspNetCore.App.The app didn't reference the Microsoft.AspNetCore.App framework. Solo le app destinate al framework Microsoft.AspNetCore.App possono essere ospitate dal modulo ASP.NET Core.Only apps targeting the Microsoft.AspNetCore.App framework can be hosted by the ASP.NET Core Module.

Per correggere questo errore, verificare che l'app sia destinata al framework Microsoft.AspNetCore.App.To fix this error, confirm that the app is targeting the Microsoft.AspNetCore.App framework. Controllare il framework di destinazione dell'app nel file .runtimeconfig.json.Check the .runtimeconfig.json to verify the framework targeted by the app.

500.34 ANCM Mixed Hosting Models Not Supported (500.34 Modelli di hosting misto non supportati nel modulo ASP.NET Core)500.34 ANCM Mixed Hosting Models Not Supported

Il processo di lavoro non è in grado di eseguire un'app In-Process e un'app Out-of-process nello stesso processo.The worker process can't run both an in-process app and an out-of-process app in the same process.

Per correggere questo errore, eseguire le app in pool di applicazioni IIS separati.To fix this error, run apps in separate IIS application pools.

500.35 ANCM Multiple In-Process Applications in same Process (500.35 Modulo ASP.NET Core: più applicazioni In-Process nello stesso processo)500.35 ANCM Multiple In-Process Applications in same Process

Il processo di lavoro non è in grado di eseguire un'app In-Process e un'app Out-of-process nello stesso processo.The worker process can't run both an in-process app and an out-of-process app in the same process.

Per correggere questo errore, eseguire le app in pool di applicazioni IIS separati.To fix this error, run apps in separate IIS application pools.

500.36 ANCM Out-Of-Process Handler Load Failure (500.36 Modulo ASP.NET Core: Errore di caricamento del gestore Out-of-process)500.36 ANCM Out-Of-Process Handler Load Failure

Il gestore delle richieste Out-of-process, aspnetcorev2_outofprocess.dll, non è accanto al file aspnetcorev2.dll.The out-of-process request handler, aspnetcorev2_outofprocess.dll, isn't next to the aspnetcorev2.dll file. Questo indica un'installazione danneggiata del modulo ASP.NET Core.This indicates a corrupted installation of the ASP.NET Core Module.

Per correggere questo errore, riparare l'installazione del bundle di hosting di .NET Core (per IIS) o di Visual Studio (per IIS Express).To fix this error, repair the installation of the .NET Core Hosting Bundle (for IIS) or Visual Studio (for IIS Express).

500.37 ANCM Failed to Start Within Startup Time Limit (500.37 Avvio del modulo ASP.NET Core non riuscito entro il limite di tempo stabilito)500.37 ANCM Failed to Start Within Startup Time Limit

Il modulo ASP.NET Core non è stato avviato entro il limite di tempo specificato.ANCM failed to start within the provied startup time limit. Per impostazione predefinita, il timeout è di 120 secondi.By default, the timeout is 120 seconds.

Questo errore può verificarsi quando si avvia un numero elevato di app nello stesso computer.This error can occur when starting a large number of apps on the same machine. Controllare i picchi di utilizzo della CPU e della memoria nel server durante l'avvio.Check for CPU/Memory usage spikes on the server during startup. Può essere necessario scaglionare il processo di avvio di più app.You may need to stagger the startup process of multiple apps.

500.30 Errore di avvio in-process500.30 In-Process Startup Failure

Il processo di lavoro ha esito negativo.The worker process fails. L'app non viene avviata.The app doesn't start.

Il modulo ASP.NET Core prova ad avviare il runtime di .NET Core In-Process, ma l'avvio non riesce.The ASP.NET Core Module attempts to start the .NET Core runtime in-process, but it fails to start. La causa di un errore di avvio di un processo viene in genere determinata osservando le voci nel log eventi dell'applicazione e nel log stdout del modulo ASP.NET Core.The cause of a process startup failure is usually determined from entries in the Application Event Log and the ASP.NET Core Module stdout log.

500.0 Errore di caricamento del gestore in-process500.0 In-Process Handler Load Failure

Il processo di lavoro ha esito negativo.The worker process fails. L'app non viene avviata.The app doesn't start.

Si è verificato un errore sconosciuto durante il caricamento dei componenti del modulo ASP.NET Core.An unknown error occurred loading ASP.NET Core Module components. Eseguire una delle azioni seguenti:Take one of the following actions:

500 Errore interno del server500 Internal Server Error

L'app viene avviata, ma un errore impedisce al server di soddisfare la richiesta.The app starts, but an error prevents the server from fulfilling the request.

Questo errore si verifica all'interno del codice dell'app durante l'avvio o durante la creazione di una risposta.This error occurs within the app's code during startup or while creating a response. La risposta potrebbe non avere alcun contenuto o essere visualizzata nel browser come un codice 500 Errore interno del server.The response may contain no content, or the response may appear as a 500 Internal Server Error in the browser. Il log eventi dell'applicazione in genere indica che l'app è stata avviata normalmente.The Application Event Log usually states that the app started normally. Dal punto di vista del server, questo è corretto.From the server's perspective, that's correct. L'app è stata effettivamente avviata, ma non può generare una risposta valida.The app did start, but it can't generate a valid response. Per risolvere il problema, eseguire l'app dal prompt dei comandi nel server o abilitare il log stdout del modulo ASP.NET Core.Run the app at a command prompt on the server or enable the ASP.NET Core Module stdout log to troubleshoot the problem.

Non è stato possibile avviare l'aggiornamento dell'applicazione. Errore: 0x800700c1Failed to start application (ErrorCode '0x800700c1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/6/ROOT/', ErrorCode '0x800700c1'.

L'app non è stata avviata perché non è stato possibile caricarne l'assembly ( .dll).The app failed to start because the app's assembly (.dll) couldn't be loaded.

Questo errore si verifica quando è presente una mancata corrispondenza del numero di bit tra l'app pubblicata e il processo w3wp/iisexpress.This error occurs when there's a bitness mismatch between the published app and the w3wp/iisexpress process.

Verificare che l'impostazione del pool di app a 32 bit sia corretta:Confirm that the app pool's 32-bit setting is correct:

  1. Selezionare il pool di app in Pool di applicazioni di Gestione IIS.Select the app pool in IIS Manager's Application Pools.
  2. Selezionare Impostazioni avanzate in Modifica pool di applicazioni nel pannello Azioni.Select Advanced Settings under Edit Application Pool in the Actions panel.
  3. Impostare Attiva applicazioni a 32 bit:Set Enable 32-Bit Applications:
    • Se si sta sviluppando un'app a 32 bit (x86), impostare il valore su True.If deploying a 32-bit (x86) app, set the value to True.
    • Se si sta sviluppando un'app a 64 bit (x64), impostare il valore su False.If deploying a 64-bit (x64) app, set the value to False.

Reimpostazione della connessioneConnection reset

Se si verifica un errore dopo l'invio delle intestazioni, è troppo tardi perché il server possa inviare un codice 500 Errore interno del server quando si verifica un errore.If an error occurs after the headers are sent, it's too late for the server to send a 500 Internal Server Error when an error occurs. Questo spesso accade quando si verifica un errore durante la serializzazione di oggetti complessi per una risposta.This often happens when an error occurs during the serialization of complex objects for a response. Questo tipo di errore viene visualizzato come un errore di reimpostazione della connessione nel client.This type of error appears as a connection reset error on the client. La registrazione delle applicazioni può consentire di risolvere questi tipi di errori.Application logging can help troubleshoot these types of errors.

Limiti di avvio predefinitiDefault startup limits

Il modulo ASP.NET Core è configurato con un valore predefinito startupTimeLimit di 120 secondi.The ASP.NET Core Module is configured with a default startupTimeLimit of 120 seconds. Quando si mantiene il valore predefinito, l'avvio di un'app potrebbe richiedere fino a due minuti prima che il modulo registri un errore del processo.When left at the default value, an app may take up to two minutes to start before the module logs a process failure. Per informazioni sulla configurazione del modulo, vedere Attributi dell'elemento aspNetCore.For information on configuring the module, see Attributes of the aspNetCore element.

Risolvere gli errori di avvio delle appTroubleshoot app startup errors

Abilitare il log di debug del modulo ASP.NET CoreEnable the ASP.NET Core Module debug log

Aggiungere le impostazioni del gestore seguenti al file dell'app web.config per abilitare i log di debug del modulo ASP.NET Core:Add the following handler settings to the app's web.config file to enable ASP.NET Core Module debug logs:

<aspNetCore ...>
  <handlerSettings>
    <handlerSetting name="debugLevel" value="file" />
    <handlerSetting name="debugFile" value="c:\temp\ancm.log" />
  </handlerSettings>
</aspNetCore>

Verificare che il percorso specificato per il log esista e che l'identità del pool di applicazioni abbia le autorizzazioni di scrittura nel percorso.Confirm that the path specified for the log exists and that the app pool's identity has write permissions to the location.

Registro eventi dell'applicazioneApplication Event Log

Accedere al log eventi dell'applicazione:Access the Application Event Log:

  1. Aprire il menu Start, cercare Visualizzatore eventi e quindi selezionare l'app Visualizzatore eventi.Open the Start menu, search for Event Viewer, and then select the Event Viewer app.
  2. In Visualizzatore eventi aprire il nodo Registri di Windows.In Event Viewer, open the Windows Logs node.
  3. Selezionare Applicazione per aprire il log eventi dell'applicazione.Select Application to open the Application Event Log.
  4. Cercare gli errori associati all'app in cui si è verificato il problema.Search for errors associated with the failing app. Gli errori presentano un valore Modulo AspNetCore IIS o Modulo AspNetCore IIS Express nella colonna Origine.Errors have a value of IIS AspNetCore Module or IIS Express AspNetCore Module in the Source column.

Eseguire l'app da un prompt dei comandiRun the app at a command prompt

Molti errori di avvio non producono informazioni utili nel log eventi dell'applicazione.Many startup errors don't produce useful information in the Application Event Log. È possibile individuare la causa di alcuni errori eseguendo l'app da un prompt dei comandi nel sistema host.You can find the cause of some errors by running the app at a command prompt on the hosting system.

Distribuzione dipendente dal frameworkFramework-dependent deployment

Se l'app è una distribuzione dipendente dal framework:If the app is a framework-dependent deployment:

  1. Da un prompt dei comandi passare alla cartella di distribuzione e avviare l'app eseguendo l'assembly dell'app con dotnet.exe.At a command prompt, navigate to the deployment folder and run the app by executing the app's assembly with dotnet.exe. Nel comando seguente sostituire <assembly_name> con il nome dell'assembly dell'app: dotnet .\<assembly_name>.dll.In the following command, substitute the name of the app's assembly for <assembly_name>: dotnet .\<assembly_name>.dll.
  2. L'output della console per l'app, in cui sono indicati gli eventuali errori, verrà scritto nella finestra della console.The console output from the app, showing any errors, is written to the console window.
  3. Se gli errori si verificano quando si effettua una richiesta all'app, effettuare una richiesta all'host e alla porta su cui è in ascolto Kestrel.If the errors occur when making a request to the app, make a request to the host and port where Kestrel listens. Usando l'host e la porta predefiniti, effettuare una richiesta a http://localhost:5000/.Using the default host and post, make a request to http://localhost:5000/. Se l'app risponde normalmente nell'indirizzo endpoint di Kestrel, è più probabile che il problema sia associato alla configurazione dell'host e che non sia interno all'app.If the app responds normally at the Kestrel endpoint address, the problem is more likely related to the hosting configuration and less likely within the app.

Distribuzione autonomaSelf-contained deployment

Se l'app è una distribuzione autonoma:If the app is a self-contained deployment:

  1. Da un prompt dei comandi passare alla cartella di distribuzione e avviare il file eseguibile dell'app.At a command prompt, navigate to the deployment folder and run the app's executable. Nel comando seguente sostituire <assembly_name> con il nome dell'assembly dell'app: <assembly_name>.exe.In the following command, substitute the name of the app's assembly for <assembly_name>: <assembly_name>.exe.
  2. L'output della console per l'app, in cui sono indicati gli eventuali errori, verrà scritto nella finestra della console.The console output from the app, showing any errors, is written to the console window.
  3. Se gli errori si verificano quando si effettua una richiesta all'app, effettuare una richiesta all'host e alla porta su cui è in ascolto Kestrel.If the errors occur when making a request to the app, make a request to the host and port where Kestrel listens. Usando l'host e la porta predefiniti, effettuare una richiesta a http://localhost:5000/.Using the default host and post, make a request to http://localhost:5000/. Se l'app risponde normalmente nell'indirizzo endpoint di Kestrel, è più probabile che il problema sia associato alla configurazione dell'host e che non sia interno all'app.If the app responds normally at the Kestrel endpoint address, the problem is more likely related to the hosting configuration and less likely within the app.

Log stdout del modulo ASP.NET CoreASP.NET Core Module stdout log

Per abilitare e visualizzare i log stdout:To enable and view stdout logs:

  1. Passare alla cartella di distribuzione del sito nel sistema host.Navigate to the site's deployment folder on the hosting system.
  2. Se la cartella logs non è presente, creare la cartella.If the logs folder isn't present, create the folder. Per istruzioni su come impostare MSBuild per la creazione automatica della cartella logs nella distribuzione, vedere l'argomento Struttura della directory.For instructions on how to enable MSBuild to create the logs folder in the deployment automatically, see the Directory structure topic.
  3. Modificare il file web.config.Edit the web.config file. Impostare stdoutLogEnabled su true e modificare il percorso di stdoutLogFile in modo da fare riferimento alla cartella logs, ad esempio .\logs\stdout.Set stdoutLogEnabled to true and change the stdoutLogFile path to point to the logs folder (for example, .\logs\stdout). stdout nel percorso è il prefisso del nome del file di log.stdout in the path is the log file name prefix. Un timestamp, l'ID del processo e l'estensione del file vengono aggiunti automaticamente al momento della creazione del log.A timestamp, process id, and file extension are added automatically when the log is created. Usando stdout come prefisso del nome del file, un tipico file di log è denominato stdout_20180205184032_5412.log.Using stdout as the file name prefix, a typical log file is named stdout_20180205184032_5412.log.
  4. Assicurarsi che l'identità del pool di applicazioni disponga delle autorizzazioni di scrittura per la cartella logs.Ensure your application pool's identity has write permissions to the logs folder.
  5. Salvare il file web.config aggiornato.Save the updated web.config file.
  6. Effettuare una richiesta all'app.Make a request to the app.
  7. Passare alla cartella logs.Navigate to the logs folder. Trovare e aprire il log stdout più recente.Find and open the most recent stdout log.
  8. Esaminare il log per verificare se sono presenti errori.Study the log for errors.

Importante

Al termine della risoluzione dei problemi, disabilitare la registrazione stdout.Disable stdout logging when troubleshooting is complete.

  1. Modificare il file web.config.Edit the web.config file.
  2. Impostare stdoutLogEnabled su false.Set stdoutLogEnabled to false.
  3. Salvare il file.Save the file.

Avviso

La mancata disabilitazione del log stdout può causare un errore dell'app o del server.Failure to disable the stdout log can lead to app or server failure. Non esiste alcun limite per le dimensioni dei file di log o il numero di file di log che è possibile creare.There's no limit on log file size or the number of log files created.

Per la registrazione di routine in un'app ASP.NET Core, usare una libreria di registrazione che limita le dimensioni dei file di log e ne esegue la rotazione.For routine logging in an ASP.NET Core app, use a logging library that limits log file size and rotates logs. Per altre informazioni, vedere Provider di registrazione di terze parti.For more information, see third-party logging providers.

Abilitare la pagina delle eccezioni per gli sviluppatoriEnable the Developer Exception Page

La variabile di ambiente ASPNETCORE_ENVIRONMENT può essere aggiunta a web.config per eseguire l'app nell'ambiente di sviluppo.The ASPNETCORE_ENVIRONMENT environment variable can be added to web.config to run the app in the Development environment. Purché l'ambiente non sia sottoposto a override durante l'avvio dell'app tramite UseEnvironment nel generatore di host, l'impostazione della variabile di ambiente consente di visualizzare la pagina delle eccezioni per gli sviluppatori quando viene eseguita l'app.As long as the environment isn't overridden in app startup by UseEnvironment on the host builder, setting the environment variable allows the Developer Exception Page to appear when the app is run.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="InProcess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>
<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

L'impostazione della variabile di ambiente per ASPNETCORE_ENVIRONMENT è consigliata solo per l'uso in server di gestione temporanea e test non esposti a Internet.Setting the environment variable for ASPNETCORE_ENVIRONMENT is only recommended for use on staging and testing servers that aren't exposed to the Internet. Al termine della risoluzione dei problemi, rimuovere la variabile di ambiente dal file web.config.Remove the environment variable from the web.config file after troubleshooting. Per informazioni sull'impostazione delle variabili di ambiente in web.config, vedere elemento figlio environmentVariables di aspNetCore.For information on setting environment variables in web.config, see environmentVariables child element of aspNetCore.

Errori di avvio comuniCommon startup errors

Vedere Errori comuni di Servizio app di Azure e IIS con ASP.NET Core.See Errori comuni di Servizio app di Azure e IIS con ASP.NET Core. Nell'argomento di riferimento è descritta la maggior parte dei problemi comuni che impediscono l'avvio dell'app.Most of the common problems that prevent app startup are covered in the reference topic.

Ottenere dati da un'appObtain data from an app

Se un'app è in grado di rispondere alle richieste, è possibile ottenere dati sulle richieste, le connessioni e altri dati dall'app tramite middleware inline di terminale.If an app is capable of responding to requests, obtain request, connection, and additional data from the app using terminal inline middleware. Per altre informazioni e codice di esempio, vedere Risolvere i problemi di progetti ASP.NET Core.For more information and sample code, see Risolvere i problemi di progetti ASP.NET Core.

Creare un dumpCreate a dump

Un dump è uno snapshot della memoria del sistema e può essere utile per determinare la causa di un arresto anomalo dell'app, un errore di avvio o un'app lenta.A dump is a snapshot of the system's memory and can help determine the cause of an app crash, startup failure, or slow app.

Arresto anomalo o eccezione di un'appApp crashes or encounters an exception

Ottenere e analizzare un dump da Segnalazione errori Windows:Obtain and analyze a dump from Windows Error Reporting (WER):

  1. Creare una cartella per i file dump di arresto anomalo del sistema in c:\dumps.Create a folder to hold crash dump files at c:\dumps. Il pool di app deve avere accesso in scrittura alla cartella.The app pool must have write access to the folder.

  2. Eseguire lo script di PowerShell EnableDumps:Run the EnableDumps PowerShell script:

  3. Eseguire l'app nelle condizioni che causano l'arresto anomalo.Run the app under the conditions that cause the crash to occur.

  4. Dopo che si è verificato l'arresto anomalo, eseguire lo script di PowerShell DisableDumps:After the crash has occurred, run the DisableDumps PowerShell script:

Dopo l'arresto anomalo di un'app e la raccolta dei dump, l'app può terminare normalmente.After an app crashes and dump collection is complete, the app is allowed to terminate normally. Lo script di PowerShell configura Segnalazione errori Windows per raccogliere fino a cinque dump per ogni app.The PowerShell script configures WER to collect up to five dumps per app.

Avviso

I dump di arresto anomalo del sistema potrebbero richiedere una grande quantità di spazio su disco (fino a diversi gigabyte ognuno).Crash dumps might take up a large amount of disk space (up to several gigabytes each).

L'app si blocca, si verifica un errore durante l'avvio o viene eseguita normalmenteApp hangs, fails during startup, or runs normally

Quando un'app si blocca (smette di rispondere ma senza arresto anomalo), si verifica un errore durante l'avvio o viene eseguita normalmente, vedere User-Mode Dump Files: Choosing the Best Tool (File dump in modalità utente: scelta dello strumento migliore) per selezionare uno strumento appropriato per produrre il dump.When an app hangs (stops responding but doesn't crash), fails during startup, or runs normally, see User-Mode Dump Files: Choosing the Best Tool to select an appropriate tool to produce the dump.

Analizzare il dumpAnalyze the dump

È possibile analizzare un dump usando diversi approcci.A dump can be analyzed using several approaches. Per altre informazioni, vedere Analyzing a User-Mode Dump File (Analisi di un file dump in modalità utente).For more information, see Analyzing a User-Mode Dump File.

Debug remotoRemote debugging

Vedere Remote Debug ASP.NET Core on a Remote IIS Computer in Visual Studio 2017 (Eseguire il debug remoto di ASP.NET Core in un computer remoto con IIS in Visual Studio 2017) nella documentazione di Visual Studio.See Remote Debug ASP.NET Core on a Remote IIS Computer in Visual Studio 2017 in the Visual Studio documentation.

Application InsightsApplication Insights

Application Insights fornisce dati di telemetria dalle app ospitate da IIS, inclusi gli errori di registrazione e le funzionalità di creazione di report.Application Insights provides telemetry from apps hosted by IIS, including error logging and reporting features. Application Insights può segnalare solo gli errori che si verificano dopo l'avvio dell'app, quando diventano disponibili le funzionalità di registrazione dell'app.Application Insights can only report on errors that occur after the app starts when the app's logging features become available. Per altre informazioni, vedere Application Insights per ASP.NET Core.For more information, see Application Insights for ASP.NET Core.

Suggerimenti aggiuntiviAdditional advice

Talvolta in un'app funzionante si verifica un problema subito dopo l'aggiornamento di .NET Core SDK nelle versioni computer o pacchetto di sviluppo all'interno dell'app.Sometimes a functioning app fails immediately after upgrading either the .NET Core SDK on the development machine or package versions within the app. In alcuni casi i pacchetti incoerenti possono interrompere un'app quando si eseguono aggiornamenti principali.In some cases, incoherent packages may break an app when performing major upgrades. La maggior parte di questi problemi può essere risolta attenendosi alle istruzioni seguenti:Most of these issues can be fixed by following these instructions:

  1. Eliminare le cartelle bin e obj.Delete the bin and obj folders.
  2. Cancellare le cache dei pacchetti in %UserProfile%\.nuget\packages e %LocalAppData%\Nuget\v3-cache.Clear the package caches at %UserProfile%\.nuget\packages and %LocalAppData%\Nuget\v3-cache.
  3. Ripristinare e ricompilare il progetto.Restore and rebuild the project.
  4. Verificare che la distribuzione precedente nel server sia stata completamente eliminata prima di ridistribuire l'app.Confirm that the prior deployment on the server has been completely deleted prior to redeploying the app.

Suggerimento

Un modo pratico per cancellare le cache dei pacchetti consiste nell'eseguire dotnet nuget locals all --clear da un prompt dei comandi.A convenient way to clear package caches is to execute dotnet nuget locals all --clear from a command prompt.

La cancellazione delle cache dei pacchetti può anche essere eseguita usando lo strumento nuget.exe ed eseguendo il comando nuget locals all -clear.Clearing package caches can also be accomplished by using the nuget.exe tool and executing the command nuget locals all -clear. nuget.exe non è un'installazione inclusa con il sistema operativo desktop Windows e deve essere ottenuta separatamente dal sito Web NuGet.nuget.exe isn't a bundled install with the Windows desktop operating system and must be obtained separately from the NuGet website.

Risorse aggiuntiveAdditional resources