Delen via


Problemen met niet-startende rolinstanties in Azure Cloud Services (uitgebreide ondersteuning) oplossen

In dit artikel wordt beschreven hoe u opstartfouten in rolinstanties van Azure Cloud Services (uitgebreide ondersteuning) kunt oplossen.

Controlelijst voor probleemoplossing

Kies uit de volgende opties om problemen vast te stellen die optreden in rolinstanties.

Optie 1: Aangepaste fouten uitschakelen

Als u volledige foutinformatie wilt weergeven, opent u het web.config-bestand voor de webrol, stelt u de aangepaste foutmodus Offin op en implementeert u de service opnieuw:

  1. Open de oplossing in Visual Studio.

  2. Open in Solution Explorer het web.config-bestand .

  3. Voeg in de system.web sectie de volgende XML-code toe:

    <customErrors mode="Off" />
    
  4. Sla het bestand op.

  5. De service opnieuw verpakken en opnieuw implementeren.

Nadat de service opnieuw is geïmplementeerd, bevatten foutberichten die u mogelijk ontvangt over de service de namen van ontbrekende assembly's of DLL's.

Optie 2: PowerShell gebruiken om de status van het rolexemplaren weer te geven

Voer de cmdlet Get-AzCloudServiceRoleInstanceView uit om informatie over de runtimestatus van het rolexemplaren op te halen:

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

De status van het rolexemplaren wordt weergegeven in de eerste kolom, zoals wordt weergegeven in de volgende voorbeelduitvoer:

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

Optie 3: Azure Portal gebruiken om de status van het rolexemplaren weer te geven

Als u statusinformatie over een rolinstantie in Azure Portal wilt weergeven, voert u de volgende stappen uit:

  1. Zoek en selecteer cloudservices (uitgebreide ondersteuning) in Azure Portal.

  2. Selecteer in de lijst met cloudservices de naam van uw cloudservice.

  3. Kijk in het menuvenster onder Instellingen en selecteer vervolgens Rollen en exemplaren.

  4. Selecteer de naam van het rolexemplaren.

  5. Noteer in het deelvenster Rolinstantie de status van het rolexemplaren in het veld Status .

Optie 4: Extern bureaublad gebruiken om foutinformatie weer te geven

Als u toegang wilt krijgen tot de rol en volledige foutinformatie wilt weergeven, gebruikt u de RDP (Remote Desktop Protocol) door de volgende stappen uit te voeren:

  1. Voeg de extensie Extern bureaublad toe voor Azure Cloud Services (uitgebreide ondersteuning).

  2. Wanneer in Azure Portal de status Gereed wordt weergegeven in het cloudservice-exemplaar, gebruikt u Extern bureaublad om u aan te melden bij de cloudservice. Zie Verbinding maken met rolinstanties met behulp van Extern bureaublad voor meer informatie.

  3. Meld u aan bij de virtuele machine (VM) met behulp van de referenties die u hebt gebruikt om Extern bureaublad in te stellen.

  4. Open een opdrachtpromptvenster .

  5. Voer de ipconfig-opdracht uit. Kopieer de geretourneerde waarde voor het IPv4-adres.

  6. Open een webbrowser.

  7. Plak in de adresbalk het IPv4-adres en voeg vervolgens een slash en de naam van het standaardbestand van de webtoepassing toe. Bijvoorbeeld http://<ipv4-address>/default.aspx.

Als u nu naar de website gaat, ziet u foutberichten met meer informatie. Hier volgt een voorbeeld:

Serverfout in toepassing '/'.

Kan bestand of assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' of een van de bijbehorende afhankelijkheden niet laden. Het systeem kan het opgegeven bestand niet vinden.

Beschrijving: Er is een niet-verwerkte uitzondering opgetreden tijdens de uitvoering van de huidige webaanvraag. Raadpleeg de stack-trace voor meer informatie over de fout en waar deze afkomstig is van de code.

Uitzonderingsdetails: System.IO.FileNotFoundException

Optie 5: De rekenemulator gebruiken

U kunt de Azure Compute Emulator gebruiken om problemen met ontbrekende afhankelijkheden en Web.config-fouten vast te stellen en op te lossen. Voor de beste resultaten wanneer u deze methode gebruikt om problemen vast te stellen, gebruikt u een computer of VM met een schone installatie van Windows.

Problemen diagnosticeren met behulp van de Azure Compute Emulator:

  1. Installeer de Azure SDK.

  2. Bouw op de ontwikkelcomputer het cloudserviceproject.

  3. Ga in Bestandenverkenner in het cloudserviceproject naar de map bin\debug.

  4. Kopieer de map .csx en het CSCFG-bestand naar de computer die u gebruikt om problemen op te sporen.

  5. Open op de schone computer een azure SDK-opdrachtpromptvenster.

  6. Voer bij de opdrachtprompt de volgende csrun opdracht uit:

    csrun.exe /devstore:start
    
  7. Voer de volgende opdracht uit:

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

    Wanneer de rol wordt gestart, geeft de webbrowser gedetailleerde foutinformatie weer.

Als er meer diagnose is vereist, kunt u de standaardhulpprogramma's voor probleemoplossing van Windows gebruiken.

Optie 6: IntelliTrace gebruiken

Notitie

U kunt IntelliTrace niet gebruiken in Visual Studio 2022. IntelliTrace is nog steeds beschikbaar als u Visual Studio 2019, 2017 of 2015 gebruikt.

Voor werkrollen en webrollen die gebruikmaken van .NET Framework 4, kunt u IntelliTrace gebruiken. IntelliTrace is beschikbaar in Visual Studio Enterprise.

Uw cloudservice implementeren terwijl IntelliTrace is ingeschakeld:

  1. Controleer of Azure SDK 1.3 of een latere versie is geïnstalleerd.

  2. Implementeer de oplossing in Visual Studio. Wanneer u de implementatie instelt, schakelt u het selectievakje IntelliTrace inschakelen voor .NET 4-rollen in.

  3. Nadat het rolexemplaren is gestart, opent u Server Explorer.

  4. Vouw het knooppunt Azure\Cloud Services uit.

  5. Als u de rolinstanties wilt weergeven, vouwt u de implementatie uit. Klik vervolgens met de rechtermuisknop op een rolinstantie.

  6. Selecteer IntelliTrace-logboeken weergeven.

  7. Ga in IntelliTrace Summary naar Uitzonderingsgegevens en vouw dat knooppunt uit.

  8. Zoek in de lijst met uitzonderingen naar een rij met een kolomwaarde Type van System.IO.FileNotFoundException. De bijbehorende waarde van de kolom Bericht moet er ongeveer uitzien als de volgende tekst:

    Kan bestand of assembly 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' of een van de bijbehorende afhankelijkheden niet laden. Het systeem kan het opgegeven bestand niet vinden.

Oorzaak 1: De cloudservicebewerking mislukt vanwege RoleInstanceStartupTimeoutError

Een of meer rolinstanties in Azure Cloud Services (uitgebreide ondersteuning) kunnen traag worden gestart. Of uw rolinstantie kan recyclen of vastlopen in een drukke status en niet beginnen zoals verwacht. In dit geval wordt het foutbericht van de RoleInstanceStartupTimeoutError roltoepassing weergegeven.

De roltoepassing bevat twee onderdelen die het recyclen van rollen kunnen veroorzaken:

Als de rol stopt, start de PaaS-agent (Platform as a Service) de rol opnieuw.

Voer de volgende stappen uit om te bepalen of het probleem wordt veroorzaakt door een opstarttaak:

  1. Gebruik Extern bureaublad om verbinding te maken met de problematische rolinstantie.

  2. Nadat u verbinding hebt gemaakt met het rolexemplaren, selecteert u Start en zoekt en selecteert u Taakbeheer.

  3. Als u een lijst met processen wilt zien, selecteert u in Taakbeheer het tabblad Details.

  4. Controleer of er processen zijn voor WaIISHost.exe (voor een WebRole) of WaWorkerHost.exe (voor een WorkerRole). Als beide processen ontbreken, mislukt een opstarttaak waarschijnlijk.

Hebt u kunnen controleren of het probleem wordt veroorzaakt door een opstarttaak? Zo ja, dan kunt u de volgende oplossing toepassen. De oplossing is echter alleen beschikbaar als de opstarttaak een eenvoudige of voorgrondtaak is. De oplossing is niet van toepassing op opstarttaken op de achtergrond. Deze worden parallel met het opstarten van de rol asynchroon uitgevoerd.

Oplossing: fouten opsporen in het opstarttaakscript

Als u een opstarttaakfout wilt oplossen, moet u fouten opsporen in het script dat wordt uitgevoerd tijdens het opstarten van de VM. Dit opstarttaakscript is het bestand Startup.cmd. Als u de problemen in het script wilt onderzoeken, kunt u kiezen uit de volgende opties:

  • Bekijk het logboekbestand C:\Resources\WaHostBootstrapper.log. Dit bestand is het logboek voor het WaHostBootstrapper.exe proces. Dit proces is verantwoordelijk voor opstarttaken. Het wordt beschreven in de werkstroom van de klassieke Windows Azure-VM-architectuur. Zoek vervolgens naar een fout of uitzondering waarbij Startup.cmd wordt uitgevoerd. Controleer met name of de afsluitcode 0 is. Als dit niet zo is, is de opstarttaak voltooid, maar bevat deze fouten. Als er geen logboeken zijn die betrekking hebben op de afsluitcode voor het script, wordt de opstarttaak nog steeds uitgevoerd.

  • Als het opstarttaakscript vanwege de verwachte bedrijfsimpact niet vrij kan worden uitgevoerd in de productieomgeving, past u het mechanisme voor logboekregistratie aan op de opdrachtregel. U kunt bijvoorbeeld de uitvoer van sleutelgegevens in een scriptopdracht omleiden naar een bestand. Een manier om dit te doen, is door toe te voegen aan > "%TEMP%\StartupLog.txt" het einde van de opdracht.

  • Voer het opstarttaakscript handmatig uit op de opdrachtregel. De locaties van dit script voor de rollen WebRole of WorkerRole worden weergegeven in de volgende tabel.

    Rol Scriptlocatie
    WebRole E:\approot\bin\Startup.cmd
    WorkerRole E:\approot\Startup.cmd

Oorzaak 2: DLL's of assembly's ontbreken

Niet-reagerende rolinstanties en rolinstanties die tussen statussen fietsen, kunnen worden veroorzaakt door ontbrekende DLL's of assembly's.

Hier volgen enkele symptomen van ontbrekende DLL's of assembly's:

  • Uw rolinstantie doorloopt de status Initialiseren, Bezet en Stoppen .

  • Uw rolinstantie is verplaatst naar de status Gereed , maar de pagina is niet zichtbaar in uw webtoepassing.

Als een website is geïmplementeerd in een webrol en een DLL ontbreekt, wordt mogelijk het volgende foutbericht over de serverruntime weergegeven.

Serverfout in toepassing '/'.

Runtimefout

Beschrijving: Er is een toepassingsfout opgetreden op de server. De huidige aangepaste foutinstellingen voor deze toepassing verhinderen dat de details van de toepassingsfout extern worden weergegeven (om veiligheidsredenen). Het kan echter worden bekeken door browsers die worden uitgevoerd op de lokale servercomputer.

Details: Als u wilt dat de details van dit specifieke foutbericht kunnen worden weergegeven op een externe computer, maakt u een <customErrors> tag met een configuratiebestand 'web.config' in de hoofdmap van de huidige webtoepassing. Voor deze <customErrors> tag moet vervolgens het kenmerk 'mode' zijn ingesteld op 'Off'.

Oplossing: Ontbrekende DLL's en assembly's oplossen

Fouten met ontbrekende DLL's en assembly's oplossen:

  1. Open de oplossing in Visual Studio.

  2. Open in Solution Explorer de map Verwijzingen .

  3. Selecteer de assembly die is geïdentificeerd in het foutbericht.

  4. Stel in Eigenschappen de eigenschap Lokaal kopiëren in op Waar.

  5. Implementeer de cloudservice opnieuw.

Nadat u hebt gecontroleerd of er geen fouten meer worden weergegeven, implementeert u de service opnieuw. Wanneer u de implementatie instelt, schakelt u het selectievakje IntelliTrace inschakelen voor .NET 4-rollen niet in.

Volgende stappen

Meer informatie

Zie de volgende artikelen voor informatie over de eerste configuratie, uitvoering en voorbeelden van opstarttaken in de klassieke cloudservice:

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.