Probleemoplossing en bekende problemen voor foutopsporing van momentopnamen in Visual Studio

Van toepassing op: Visual Studio

Dit artikel bevat oplossingen voor veelvoorkomende problemen die kunnen optreden wanneer u fouten opspoort in een Azure-app met snapshot debugger in Visual Studio.

Als de stappen die in dit artikel worden beschreven, uw probleem niet oplossen, zoekt u het probleem op in de Ontwikkelaarscommunity of meldt u een nieuw probleem door Help>feedback> verzendenEen probleem melden in Visual Studio te kiezen.

Probleem: 'Foutopsporingsprogramma voor momentopname bijvoegen' treedt een HTTP-statuscodefout op

Als u de volgende fout ziet in het venster Uitvoer tijdens de poging om te koppelen, is dit mogelijk een bekend probleem dat wordt vermeld in de volgende secties. Probeer de voorgestelde oplossingen en als het probleem zich blijft voordoen, neemt u contact op met de voorgaande alias.

[TIMESTAMP] Error --- Unable to Start Snapshot Debugger - Attach Snapshot Debugger failed: System.Net.WebException: The remote server returned an error: (###) XXXXXX

(401) Niet geautoriseerd

Deze fout geeft aan dat de REST-aanroep die door Visual Studio is uitgegeven aan Azure een ongeldige referentie gebruikt.

Voer de volgende stappen uit:

  • Zorg ervoor dat uw Visual Studio-account voor persoonlijke instellingen machtigingen heeft voor het Azure-abonnement en de resource waaraan u een bijlage koppelt. Een snelle manier om dit te bepalen is door te controleren of de resource beschikbaar is in het dialoogvenster van Foutopsporing>bijvoegen momentopname foutopsporingsprogramma...>Azure-resource>Selecteer Bestaand of in Cloud Explorer.
  • Als deze fout zich blijft voordoen, gebruikt u een van de feedbackkanalen die in het begin van dit artikel worden beschreven.

Als u Verificatie/Autorisatie (EasyAuth) hebt ingeschakeld op uw App Service, kan er een 401-fout optreden met LaunchAgentAsync in het foutbericht van de aanroepstack. Zorg ervoor dat actie die moet worden uitgevoerd wanneer de aanvraag niet is geverifieerd, is ingesteld op Anonieme aanvragen toestaan (geen actie) in de Azure Portal en geef in plaats hiervan een authorization.json op in D:\Home\sites\wwwroot met de volgende inhoud.

{
  "routes": [
    {
      "path_prefix": "/",
      "policies": {
        "unauthenticated_action": "RedirectToLoginPage"
      }
    },
    {
      "http_methods": [ "POST" ],
      "path_prefix": "/41C07CED-2E08-4609-9D9F-882468261608/api/agent",
      "policies": {
        "unauthenticated_action": "AllowAnonymous"
      }
    }
  ]
}

De eerste route beveiligt effectief uw app-domein, vergelijkbaar met Aanmelden met [IdentityProvider].. Met de tweede route wordt het eindpunt SnapshotDebugger AgentLaunch buiten verificatie weergegeven. Hiermee wordt de vooraf gedefinieerde actie van het starten van de diagnostische agent snapshotDebugger alleen uitgevoerd als de vooraf geïnstalleerde site-extensie SnapshotDebugger is ingeschakeld voor uw app-service. Zie URL-autorisatieregels voor meer informatie over de configuratie van de authorization.json.

(403) Verboden

De fout 403 - Verboden geeft aan dat de machtiging is geweigerd. Veel verschillende scenario's kunnen deze fout veroorzaken.

Voer de volgende stappen uit:

  • Controleer of uw Visual Studio-account een geldig Azure-abonnement heeft met de benodigde RBAC-machtigingen (Role-Based Access Control) voor de resource. Voor AppService controleert u of u machtigingen hebt om een query uit te voeren op het App Service Plan dat als host fungeert voor uw app.
  • Controleer of de tijdstempel van uw clientcomputer juist en up-to-date is. Servers met tijdstempels die langer dan 15 minuten van de aanvraagtijdstempel zijn uitgeschakeld, produceren deze fout meestal.
  • Als deze fout zich blijft voordoen, gebruikt u een van de feedbackkanalen die in het begin van dit artikel worden beschreven.

(404) Niet gevonden

De fout 404 - Niet gevonden geeft aan dat de website niet kan worden gevonden op de server.

Voer de volgende stappen uit:

  • Controleer of u een website hebt geïmplementeerd en wordt uitgevoerd op de App Service resource waaraan u een bijlage koppelt.
  • Controleer of de site beschikbaar is op https://< resource.azurewebsites.net>
  • Controleer of uw correct uitgevoerde aangepaste webtoepassing geen statuscode van 404 retourneert wanneer deze wordt geopend op https://< resource.azurewebsites.net>.
  • Als deze fout zich blijft voordoen, gebruikt u een van de feedbackkanalen die in het begin van dit artikel worden beschreven.

(406) Niet acceptabel

De fout 406 - Niet acceptabel geeft aan dat de server niet kan reageren op het type dat is ingesteld in de header Accepteren van de aanvraag.

Voer de volgende stappen uit:

  • Controleer of uw site beschikbaar is op https://< resource.azurewebsites.net>.
  • Controleer of uw site niet is gemigreerd naar nieuwe exemplaren. Snapshot Debugger gebruikt het begrip ARRAffinity voor het routeren van aanvragen naar specifieke exemplaren die deze fout af en toe kunnen veroorzaken.
  • Als deze fout zich blijft voordoen, gebruikt u een van de feedbackkanalen die in het begin van dit artikel worden beschreven.

(409) Conflict

De fout 409 - Conflict geeft aan dat de aanvraag conflicteert met de huidige serverstatus.

Dit is een bekend probleem dat optreedt wanneer een gebruiker probeert snapshot debugger toe te voegen aan een AppService die ApplicationInsights heeft ingeschakeld. ApplicationInsights stelt de AppSettings in met een andere casing dan Visual Studio, waardoor dit probleem wordt veroorzaakt.

We hebben dit opgelost in Visual Studio 2019.

Voer de volgende stappen uit:

  • Als deze fout zich blijft voordoen, gebruikt u een van de feedbackkanalen die in het begin van dit artikel worden beschreven.

(500) Interne serverfout

De fout 500 - Interne server geeft aan dat de site offline is of dat de server de aanvraag niet kan verwerken. Snapshot Debugger werkt alleen bij actieve toepassingen. Application Insights Snapshot Debugger biedt momentopnamen voor uitzonderingen en is mogelijk het beste hulpprogramma voor uw behoeften.

(502) Ongeldige gateway

De fout 502 - Ongeldige gateway duidt op een netwerkprobleem aan de serverzijde en kan tijdelijk zijn.

Voer de volgende stappen uit:

  • Wacht een paar minuten voordat u het foutopsporingsprogramma voor momentopnamen opnieuw bijvoegt.
  • Als deze fout zich blijft voordoen, gebruikt u een van de feedbackkanalen die in het begin van dit artikel worden beschreven.

Probleem: Snappoint is niet ingeschakeld

Als u een waarschuwingspictogram ziet met uw snappoint in plaats van het normale snappoint-pictogram, is het snappoint niet ingeschakeld.

Schermopname om te laten zien dat Snappoint niet wordt ingeschakeld.

Voer de volgende stappen uit:

  • Zorg ervoor dat u dezelfde versie van de broncode gebruikt om uw app te bouwen en te implementeren.
  • Zorg ervoor dat u de juiste symbolen voor uw implementatie laadt.
  • Om dit te doen, bekijkt u het venster Modules tijdens momentopnameopsporing en controleert u of in de kolom Symboolbestand een PDB-bestand wordt weergegeven dat is geladen voor de module die u foutopsporing uitvoert.
    • Het Snapshot Debugger probeert automatisch symbolen te downloaden en te gebruiken voor uw implementatie.

Probleem: symbolen worden niet geladen wanneer ik een momentopname open

Als u het volgende venster ziet, zijn de symbolen niet geladen.

Schermopname om aan te geven dat symbolen niet worden geladen.

Voer de volgende stappen uit:

  • Selecteer Symboolinstellingen wijzigen... op de pagina.

  • Voeg in de instellingen voor foutopsporingssymbool > een map voor de symboolcache toe.

  • Start foutopsporing van momentopnamen opnieuw nadat het symboolpad is ingesteld.

    De symbolen of .pdb-bestanden die beschikbaar zijn in uw project, moeten overeenkomen met uw App Service-implementatie. De meeste implementaties (implementatie via Visual Studio, CI/CD met Azure Pipelines of Kudu, enzovoort) publiceren uw symboolbestanden samen met uw App Service. Als u de map voor de symboolcache instelt, kan Visual Studio deze symbolen gebruiken.

    Schermopname van de instellingen voor symbolen.

  • Als uw organisatie een symboolserver gebruikt of symbolen in een ander pad laat vallen, gebruikt u de symboolinstellingen om de juiste symbolen voor uw implementatie te laden.

Probleem: Ik kan de optie Foutopsporing voor momentopnamen bijvoegen niet zien in Cloud Explorer

Voer de volgende stappen uit:

  • Zorg ervoor dat het onderdeel Snapshot Debugger is geïnstalleerd. Open het installatieprogramma van Visual Studio en controleer het onderdeel Snapshot Debugger in de Azure-workload.

  • Zorg ervoor dat uw app wordt ondersteund voor Visual Studio 2019 of nieuwere versies:

    • Azure-app Services: ASP.NET toepassingen die worden uitgevoerd op .NET Framework 4.6.1 of hoger.
    • Azure-app Services: ASP.NET Core toepassingen die worden uitgevoerd op .NET Core 2.0 of hoger in Windows.
    • Azure Virtual Machines (en virtuele-machineschaalset): ASP.NET toepassingen die worden uitgevoerd op .NET Framework 4.6.1 of hoger.
    • Azure Virtual Machines (en virtuele-machineschaalset): ASP.NET Core toepassingen die worden uitgevoerd op .NET Core 2.0 of hoger in Windows.
    • Azure Kubernetes Services : ASP.NET Core toepassingen die worden uitgevoerd op .NET Core 2.2 of hoger op Debian 9.
    • Azure Kubernetes Services : ASP.NET Core toepassingen die worden uitgevoerd op .NET Core 2.2 of hoger op Alpine 3.8.
    • Azure Kubernetes Services : ASP.NET Core toepassingen die worden uitgevoerd op .NET Core 2.2 of hoger op Ubuntu 18.04.

Probleem: Ik zie alleen beperkte momentopnamen in de Diagnostische hulpprogramma's

Schermopname van beperkt snappoint.

Voer de volgende stappen uit:

  • Momentopnamen nemen weinig geheugen in beslag, maar hebben wel doorvoerkosten. Als het foutopsporingsprogramma voor momentopnamen detecteert dat uw server zwaar wordt belast, worden er geen momentopnamen gemaakt. U kunt al vastgelegde momentopnamen verwijderen door de sessie Snapshot Debugger te stoppen en het opnieuw te proberen.

Probleem: Foutopsporing van momentopnamen met meerdere versies van Visual Studio geeft me fouten (Visual Studio 2019 of nieuwere versies)

Visual Studio 2019 vereist een nieuwere versie van de site-extensie Snapshot Debugger op uw Azure App Service. Deze versie is niet compatibel met de oudere versie van de site-extensie Snapshot Debugger die wordt gebruikt door Visual Studio 2017. U krijgt de volgende fout als u probeert het foutopsporingsprogramma voor momentopnamen in Visual Studio 2019 te koppelen aan een Azure App Service die eerder is opgespoord door het Foutopsporingsprogramma voor momentopnamen in Visual Studio 2017:

Schermopname van de incompatibele site-extensie Snapshot Debugger Visual Studio 2019.

Als u Visual Studio 2017 gebruikt om het foutopsporingsprogramma voor momentopnamen te koppelen aan een Azure App Service die eerder is opgespoord door het foutopsporingsprogramma voor momentopnamen in Visual Studio 2019, krijgt u de volgende fout:

Schermopname van incompatibele Site-extensie snapshot Debugger Visual Studio 2017.

U kunt dit oplossen door de volgende app-instellingen in de Azure Portal te verwijderen en het foutopsporingsprogramma voor momentopnamen opnieuw toe te voegen:

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

Probleem: ik koppel aan de verkeerde/oude Azure-resource of het opslagaccount

Voer de volgende stappen uit:

De vermeldingen 'Azure-resource' en 'Opslagaccount' gebruiken resourcenamen als sleutels, zodat acties zoals het migreren van een resource naar verschillende abonnementen problemen kunnen veroorzaken. Voer de volgende stappen uit om de lijst te wissen:

  1. Voer deze opdrachten uit in de opdrachtprompt Voor ontwikkelaars voor VS (met beheerdersbevoegdheden).

    vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU
    vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
    
  2. Verwijder alle SUO-bestanden die zijn gekoppeld aan de web-app.

Probleem: ik ondervind problemen met foutopsporing voor momentopnamen en ik moet meer logboekregistratie inschakelen

Agentlogboeken inschakelen

Als u agentlogboekregistratie wilt in- en uitschakelen, opent u Visual Studio en navigeert u naar Extra>Opties>Momentopnamefoutopsporingsprogramma>Agentregistratie inschakelen. Opmerking: als Oude agentlogboeken verwijderen bij sessie starten ook is ingeschakeld, worden bij elke geslaagde Visual Studio-bijlage eerdere agentlogboeken verwijderd.

U vindt agentlogboeken op de volgende locaties:

  • App Services:
    • Navigeer naar de Kudu-site van uw App Service (uw< appservice>).scm.azurewebsites.net) en navigeer naar Debug Console.
    • Agentlogboeken worden opgeslagen in de volgende map: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • VM/VMSS:
    • Meld u aan bij uw VM, agentlogboeken worden als volgt opgeslagen: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
  • AKS
    • Navigeer naar de volgende map: /tmp/diag/AgentLogs/*

Profiler-/instrumentatielogboeken inschakelen

U vindt instrumentatielogboeken op de volgende locaties:

  • App Services:
    • Foutlogboekregistratie wordt automatisch verzonden naar D:\Home\LogFiles\eventlog.xml, gebeurtenissen worden gemarkeerd met <Provider Name="Instrumentation Engine" /> of 'Productieonderbrekingspunten'
  • VM/VMSS:
    • Meld u aan bij uw VM en open Logboeken.
    • Open de volgende weergave: Toepassing Windows-logboeken>.
    • Filter huidig logboek op gebeurtenisbron met behulp van productieonderbrekingspunten of instrumentatie-engine.
  • AKS
    • Logboekregistratie van instrumentatie-engine op /tmp/diag/log.txt (ingesteld MicrosoftInstrumentationEngine_FileLogPath in DockerFile)
    • ProductionBreakpoint-logboekregistratie op /tmp/diag/shLog.txt

Bekende problemen

  • Foutopsporing van momentopnamen met meerdere Visual Studio-clients tegen dezelfde App Service wordt momenteel niet ondersteund.
  • Roslyn IL-optimalisaties worden niet volledig ondersteund in ASP.NET Core projecten. Voor sommige ASP.NET Core projecten kunt u sommige variabelen mogelijk niet zien of bepaalde variabelen niet gebruiken in voorwaardelijke instructies.
  • Speciale variabelen, zoals $FUNCTION of $CALLER, kunnen niet worden geëvalueerd in voorwaardelijke instructies of logboekpunten voor ASP.NET Core projecten.
  • Foutopsporing van momentopnamen werkt niet in App Services waarvoor Lokale cache is ingeschakeld.
  • Foutopsporing van momentopnamen in API-apps wordt momenteel niet ondersteund.

Upgrade van site-extensie

Momentopname foutopsporing en Application Insights zijn afhankelijk van een ICorProfiler, die wordt geladen in het siteproces en problemen met bestandsvergrendeling veroorzaakt tijdens de upgrade. We raden dit proces aan om ervoor te zorgen dat uw productielocatie geen downtime heeft.

  • Maak een implementatiesite binnen uw App Service en implementeer uw site in de site.
  • Vervang de site met productie vanuit Cloud Explorer in Visual Studio of vanuit de Azure Portal.
  • Stop de site van de site van de site. Het duurt enkele seconden voordat de site is uitgeschakeldw3wp.exe proces van alle exemplaren.
  • Upgrade de site-extensie van de sitesite van de Kudu-site of de Azure Portal (App Service Blade > Development Tools > Extensions > Update).
  • Start de site Site. We raden u aan de site te bezoeken om deze opnieuw op te warmen.
  • Vervang de site door productie.

Verwijzingen