Condividi tramite


Risolvere i problemi relativi alle istanze del ruolo di Azure Servizi cloud (supporto esteso) che non si avviano

Questo articolo illustra come risolvere gli errori di avvio nelle istanze del ruolo di Azure Servizi cloud (supporto esteso).

Elenco di controllo per la risoluzione dei problemi

Scegliere tra le opzioni seguenti per diagnosticare i problemi che si verificano nelle istanze del ruolo.

Opzione 1: Disattivare gli errori personalizzati

Per visualizzare informazioni complete sull'errore, aprire il file Web.config per il ruolo Web, impostare la modalità Offdi errore personalizzata su e quindi ridistribuire il servizio:

  1. In Visual Studio aprire la soluzione.

  2. In Esplora soluzioni aprire il file Web.config.

  3. system.web Nella sezione aggiungere il codice XML seguente:

    <customErrors mode="Off" />
    
  4. Salvare il file.

  5. Riconfezionare e ridistribuire il servizio.

Dopo la ridistribuzione del servizio, i messaggi di errore che potrebbero essere visualizzati sul servizio includeranno i nomi di assembly o DLL mancanti.

Opzione 2: Usare PowerShell per visualizzare lo stato dell'istanza del ruolo

Per ottenere informazioni sullo stato di runtime dell'istanza del ruolo, eseguire il cmdlet Get-AzCloudServiceRoleInstanceView :

$roleInstanceView = @{
    CloudServiceName = "<cloud-service-name>"
    ResourceGroupName = "<resource-group-name>"
    RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView

Lo stato dell'istanza del ruolo è elencato nella prima colonna, come illustrato nell'output di esempio seguente:

Statuses            PlatformFaultDomain PlatformUpdateDomain
--------            ------------------- --------------------
{RoleStateStarting} 0                   0

Opzione 3: usare il portale di Azure per visualizzare lo stato dell'istanza del ruolo

Per visualizzare informazioni sullo stato di un'istanza del ruolo nel portale di Azure, seguire questa procedura:

  1. Nel portale di Azure cercare e selezionare Servizi cloud (supporto esteso).

  2. Nell'elenco dei servizi cloud selezionare il nome del servizio cloud.

  3. Nel riquadro dei menu cercare in Impostazioni e quindi selezionare Ruoli e istanze.

  4. Selezionare il nome dell'istanza del ruolo.

  5. Nel riquadro dell'istanza del ruolo prendere nota dello stato dell'istanza del ruolo nel campo Stato .

Opzione 4: Usare Desktop remoto per visualizzare le informazioni sugli errori

Per accedere al ruolo e visualizzare informazioni complete sugli errori, usare Remote Desktop Protocol (RDP) seguendo questa procedura:

  1. Aggiungere l'estensione Desktop remoto per Azure Servizi cloud (supporto esteso).

  2. Nel portale di Azure, quando l'istanza del servizio cloud mostra lo stato Pronto, usare Desktop remoto per accedere al servizio cloud. Per altre informazioni, vedere Connettersi alle istanze del ruolo tramite Desktop remoto.

  3. Accedere alla macchina virtuale usando le credenziali usate per configurare Desktop remoto.

  4. Aprire una finestra del prompt dei comandi .

  5. Eseguire il comando ipconfig . Copiare il valore restituito per l'indirizzo IPv4.

  6. Aprire un Web browser.

  7. Nella barra degli indirizzi incollare l'indirizzo IPv4, quindi aggiungere una barra e il nome del file predefinito dell'applicazione Web. Ad esempio, http://<ipv4-address>/default.aspx.

Se si passa al sito Web ora, verranno visualizzati messaggi di errore che contengono altre informazioni. Ecco un esempio:

Errore del server nell'applicazione '/'.

Impossibile caricare il file o l'assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' o una delle relative dipendenze. Impossibile trovare il file specificato.

Descrizione: Si è verificata un'eccezione non gestita durante l'esecuzione della richiesta Web corrente. Esaminare la traccia dello stack per altre informazioni sull'errore e sulla posizione in cui ha avuto origine nel codice.

Dettagli eccezione: System.IO.FileNotFoundException

Opzione 5: Usare l'emulatore di calcolo

È possibile usare l'emulatore di calcolo di Azure per diagnosticare e risolvere i problemi di dipendenze mancanti ed errori diWeb.config . Per ottenere risultati ottimali quando si usa questo metodo per diagnosticare i problemi, usare un computer o una macchina virtuale con un'installazione pulita di Windows.

Per diagnosticare i problemi usando l'emulatore di calcolo di Azure:

  1. Installare Azure SDK.

  2. Nel computer di sviluppo compilare il progetto di servizio cloud.

  3. In Esplora file, nel progetto di servizio cloud, passare alla cartella bin\debug.

  4. Copiare la cartella csx e il file con estensione cscfg nel computer in uso per eseguire il debug dei problemi.

  5. Nel computer pulito aprire una finestra del prompt dei comandi di Azure SDK.

  6. Al prompt dei comandi eseguire il comando seguente csrun :

    csrun.exe /devstore:start
    
  7. Eseguire il comando riportato di seguito:

    run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
    

    All'avvio del ruolo, il Web browser visualizza informazioni dettagliate sugli errori.

Se sono necessarie altre diagnosi, è possibile usare gli strumenti standard per la risoluzione dei problemi di Windows.

Opzione 6: Usare IntelliTrace

Nota

Non è possibile usare IntelliTrace in Visual Studio 2022. IntelliTrace è ancora disponibile se si usa Visual Studio 2019, 2017 o 2015.

Per i ruoli di lavoro e Web che usano .NET Framework 4, è possibile usare IntelliTrace. IntelliTrace è disponibile in Visual Studio Enterprise.

Per distribuire il servizio cloud mentre IntelliTrace è attivato:

  1. Verificare che Azure SDK 1.3 o versione successiva sia installato.

  2. In Visual Studio distribuire la soluzione. Quando si configura la distribuzione, selezionare la casella di controllo Abilita IntelliTrace per i ruoli .NET 4 .

  3. Dopo l'avvio dell'istanza del ruolo, aprire Esplora server.

  4. Espandere il nodo Azure\Servizi cloud.

  5. Per elencare le istanze del ruolo, espandere la distribuzione. Fare quindi clic con il pulsante destro del mouse su un'istanza del ruolo.

  6. Selezionare Visualizza log di IntelliTrace.

  7. In Riepilogo in IntelliTrace passare a Dati eccezioni ed espandere tale nodo.

  8. Nell'elenco delle eccezioni cercare una riga che contiene un valore di colonna Typesystem.IO.FileNotFoundException. Il valore della colonna Message corrispondente dovrebbe essere simile al testo seguente:

    Impossibile caricare il file o l'assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' o una delle relative dipendenze. Impossibile trovare il file specificato.

Causa 1: l'operazione del servizio cloud non riesce a causa di RoleInstanceStartupTimeoutError

Una o più istanze del ruolo in Azure Servizi cloud (supporto esteso) potrebbero essere lente per l'avvio. In alternativa, l'istanza del ruolo potrebbe essere in fase di riciclo o bloccata in uno stato occupato e non iniziare come previsto. In questo caso, viene visualizzato il messaggio di errore dell'applicazione del RoleInstanceStartupTimeoutError ruolo.

L'applicazione ruolo contiene due parti che potrebbero causare il riciclo dei ruoli:

Se il ruolo si arresta, l'agente paaS riavvia il ruolo.

Per determinare se il problema è causato da un'attività di avvio, seguire questa procedura:

  1. Provare a usare Desktop remoto per connettersi all'istanza del ruolo problematica.

  2. Dopo aver eseguito la connessione all'istanza del ruolo, selezionare Avvia, quindi cercare e selezionare Gestione attività.

  3. Per visualizzare un elenco di processi, selezionare la scheda Dettagli in Gestione attività.

  4. Verificare se sono presenti processi per WaIISHost.exe (per un ruolo Web) o WaWorkerHost.exe (per un ruolo di lavoro). Se entrambi questi processi sono mancanti, è probabile che un'attività di avvio abbia esito negativo.

È stato possibile verificare che il problema sia causato da un'attività di avvio? In tal caso, è possibile applicare la soluzione seguente. Tuttavia, la soluzione è disponibile solo se l'attività di avvio è un'attività semplice o in primo piano. La soluzione non si applica alle attività di avvio in background. Questi vengono eseguiti in modo asincrono in parallelo con l'avvio del ruolo.

Soluzione: eseguire il debug dello script dell'attività di avvio

Per risolvere un errore di attività di avvio, eseguire il debug dello script eseguito durante l'avvio della macchina virtuale. Questo script dell'attività di avvio è il file Startup.cmd . Per analizzare i problemi nello script, è possibile scegliere tra le opzioni seguenti:

  • Visualizzare il file di log C:\Resources\WaHostBootstrapper.log . Questo file è il log per il processo diWaHostBootstrapper.exe . Questo processo è responsabile delle attività di avvio. Viene descritto nel flusso di lavoro dell'architettura classica delle macchine virtuali di Windows Azure. Cercare quindi eventuali errori o eccezioni che comportano l'esecuzione di Startup.cmd. Verificare in particolare se il codice di uscita è 0. In caso contrario, l'attività di avvio è stata completata ma presenta errori. Se non sono presenti log correlati al codice di uscita per lo script, l'attività di avvio è ancora in esecuzione.

  • Se lo script dell'attività di avvio non può essere eseguito liberamente nell'ambiente di produzione a causa dell'impatto aziendale previsto, personalizzare il meccanismo di registrazione nella riga di comando. Ad esempio, è possibile reindirizzare l'output delle informazioni chiave in un comando script a un file. Un modo per eseguire questa operazione consiste nell'accodare > "%TEMP%\StartupLog.txt" alla fine del comando.

  • Nella riga di comando eseguire manualmente lo script dell'attività di avvio. Le posizioni di questo script per i ruoli WebRole o WorkerRole sono illustrate nella tabella seguente.

    Ruolo Percorso dello script
    Webrole E:\approot\bin\Startup.cmd
    Workerrole E:\approot\Startup.cmd

Causa 2: DLL o assembly mancanti

Le istanze del ruolo e le istanze del ruolo che si alternano tra gli stati potrebbero non rispondere a DLL o assembly mancanti.

Ecco alcuni sintomi di DLL o assembly mancanti:

  • L'istanza del ruolo scorre gli stati Inizializzazione, Occupato e Arresto .

  • L'istanza del ruolo è stata spostata nello stato Pronto , ma la pagina non è visibile nell'applicazione Web.

Se un sito Web viene distribuito in un ruolo Web e manca una DLL, potrebbe essere visualizzato il messaggio di errore di runtime del server seguente.

Errore del server nell'applicazione '/'.

Errore di runtime

Descrizione: Si è verificato un errore dell'applicazione nel server. Le impostazioni di errore personalizzate correnti per questa applicazione impediscono la visualizzazione remota dei dettagli dell'errore dell'applicazione (per motivi di sicurezza). Può tuttavia essere visualizzato dai browser in esecuzione nel computer server locale.

Dettagli: Per consentire la visualizzazione dei dettagli di questo messaggio di errore specifico nel computer remoto, creare un <customErrors> tag con un file di configurazione "web.config" nella directory radice dell'applicazione Web corrente. Questo <customErrors> tag deve quindi avere l'attributo "mode" impostato su "Off".

Soluzione: risolvere le DLL e gli assembly mancanti

Per risolvere gli errori di DLL e assembly mancanti:

  1. In Visual Studio aprire la soluzione.

  2. In Esplora soluzioni aprire la cartella Riferimenti.

  3. Selezionare l'assembly identificato nel messaggio di errore.

  4. In Proprietà impostare la proprietà Copy Local su True.

  5. Ridistribuire il servizio cloud.

Dopo aver verificato che gli errori non vengano più visualizzati, ridistribuire il servizio. Quando si configura la distribuzione, non selezionare la casella di controllo Abilita IntelliTrace per i ruoli .NET 4 .

Passaggi successivi

Ulteriori informazioni

Per informazioni sulla configurazione iniziale, l'esecuzione e gli esempi di attività di avvio nel servizio cloud classico, vedere gli articoli seguenti:

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.