Felsöka distributionsuppgifter i Azure Web App

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Den här artikeln hjälper dig att lösa vanliga fel som uppstår när du använder Azure Web App(AzureWebApp@1) eller Azure App Service Deploy (AzureRmWebAppDeployment@4) i Azure Pipelines.

Det här är en felsökningsartikel. Mer information om App Service-distributioner finns i Distribuera till Azure App Service med hjälp av Azure Pipelines, som omfattar AzureWebApp@1 och avancerade scenarier med AzureRmWebAppDeployment@4. Information om containerbaserade distributioner finns i Distribuera en anpassad container till App Service med Hjälp av Azure Pipelines, som innehåller AzureRmWebAppDeployment@4 exempel.

Tips/Råd

Innan du felsöker bör du samla in felsökningsloggar genom att aktivera utförlig loggning för pipelinekörningen. Du kan också samla in diagnostikloggar från Kudu-tjänsten och funktionen Diagnostisera och lösa problem i Azure-portalen för din App Service. Kontrollera Azure DevOps-status och Azure-status för att utesluta tjänstavbrott.

JavaScript-heap minnesfel

Symtom

Distributionsuppgiften misslyckas med följande fel:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

Orsak

Det här felet uppstår när uppgiften försöker packa upp och packa om ett stort distributionspaket, och åtgärden överskrider agentens tillgängliga minne. Microsoft-drivna agenter har begränsade resurser, vilket kan orsaka att detta fel uppstår för omfattande paket.

Lösning / Beslut

Använd Azure Web App-uppgiften (AzureWebApp@1) istället för uppgiften AzureRmWebAppDeployment@4 för App Service-distributioner. Uppgiften AzureWebApp@1 hanterar stora paket mer effektivt.

Om du vill ha mer komplicerade distributionsscenarier som kräver XML-transformering använder du Azure App Service Deploy-uppgiften (AzureRmWebAppDeployment@4) med ett mindre paket eller delar upp transformeringar i ett separat pipelinesteg.

"ECONNRESET" under distributionen

Symtom

Distributionsuppgiften misslyckas med följande fel:

Encountered a retriable error: ECONNRESET. Message: read ECONNRESET

Orsak

En nätverksanslutning mellan pipelineagenten och App Service återställdes under distributionen. Vanliga orsaker inkluderar:

  • Microsoft-värdbaserade agenter som distribuerar till en App Service Environment (ASE): ASE kan blockera inkommande anslutningar från agentens IP-adresser.
  • Lokalt installerade agenter: En fläckig eller instabil nätverksanslutning mellan agenten och App Service.

Lösning / Beslut

För Microsoft-hostade agenter med ASE:

Kontrollera att dina ASE-nätverkssäkerhetsregler tillåter inkommande anslutningar från IP-intervallen för Microsoft-hostad agent i din geografi. Listan över IP-adressintervall finns i Tillåtna IP-adresser och domän-URL:er.

För lokalt installerade agenter:

  • Kontrollera att nätverksanslutningen mellan din agent och App Service är stabil.
  • Om problemet kvarstår skapar du ett supportärende med Azure App Service eller Azure Networking-teamet för ytterligare undersökning.

"Det gick inte att distribuera webbpaketet till App Service"

Symtom

Distributionsaktiviteten misslyckas med ett eller båda av följande fel:

[error]Failed to deploy web package to App Service.
Package deployment using ZIP Deploy failed. Refer logs for more details.

Orsak

Uppgiften använder Kudu-API zipDeploy :et för distribution och API:et returnerade ett fel. Det här felet kan inträffa när App Service inte kan bearbeta det inkommande paketet korrekt.

Lösning / Beslut

Ange appinställningen WEBSITE_RUN_FROM_PACKAGE till 1 på din App Service:

  1. Gå till Din App Service i Azure-portalen.
  2. Välj Inställningar för konfigurationsprogram>.
  3. Lägg till eller uppdatera inställningen WEBSITE_RUN_FROM_PACKAGE med värdet 1.
  4. Spara konfigurationen och försök distribuera igen.

Mer information finns i Kör din app från ett paket.

"EMFILE: för många öppna filer"

Symtom

Distributionsaktiviteten misslyckas med något av följande fel:

EMFILE: too many open files
Error: Package deployment using ZIP Deploy failed

Orsak

Distributionsuppgiften öppnar för många filreferenser när ett stort paket packas upp, vilket överskrider operativsystemets filbeskrivningsgräns.

Lösning / Beslut

Använd någon av följande lösningar:

Alternativ 1: Använd Azure Web App-aktiviteten

Växla från AzureRmWebAppDeployment@4 till azure web app-uppgiften (AzureWebApp@1) som hanterar stora paket på olika sätt.

Alternativ 2: Extrahera filer före distribution

Använd aktiviteten Extrahera filer för att packa upp paketet i ett tidigare steg och distribuera sedan den extraherade mappen. Den här metoden förhindrar att distributionsuppgiften behöver packa upp själva paketet.

steps:
- task: ExtractFiles@1
  displayName: 'Extract files'
  inputs:
    archiveFilePatterns: '$(InputPackageZipPath)'
    destinationFolder: '$(OutputUnzippedPath)'

- task: AzureRmWebAppDeployment@4
  displayName: 'Azure App Service Deploy'
  inputs:
    azureSubscription: 'Subscription'
    WebAppName: 'app-name'
    package: '$(OutputUnzippedPath)'

Felet "Resursen finns inte"

Symtom

Distributionsuppgiften misslyckas med följande fel:

Error: Resource '<ResourceName>' doesn't exist. Resource should exist before deployment.

Det här felet kan inträffa med Azure Web App-uppgifter, Azure App Service Deploy-uppgifter, Azure Functions-uppgifter och distributionsuppgifter för ARM-mallar.

Orsak

Uppgiften anropar Azure-API:er som är beroende av cachelagrade resursdata. Om App Service eller annan Azure-resurs nyligen har skapats – antingen i samma pipeline, av ett annat verktyg eller precis innan pipelinen kördes – kanske cachen inte återspeglar den nya resursen ännu.

Lösning / Beslut

Lägg till ett fördröjningssteg i pipelinen före distributionsuppgiften så att Azure-cachen kan uppdateras:

steps:
- task: PowerShell@2
  displayName: 'Wait for resource propagation'
  inputs:
    targetType: inline
    script: Start-Sleep -Seconds 60

Om du inte löser felet genom att lägga till en fördröjning skapar du ett supportärende med Azure-tjänstteamet för den berörda resurstypen.

"Inget paket hittades med angivet mönster"

Symtom

Distributionsuppgiften misslyckas med ett fel som anger att inget paket hittades som matchar det angivna mönstret.

Orsak

Artefakten som innehåller distributionspaketet publicerades inte i bygget eller i en tidigare fas, eller så laddades den inte ned i det aktuella jobbet.

Lösning / Beslut

  • Kontrollera att bygget eller ett tidigare pipelinesteg publicerar paketet som en pipelineartefakt.
  • Bekräfta att det aktuella jobbet innehåller ett nedladdningssteg för artefakten.
  • Kontrollera att filsökvägsmönstret i distributionsaktiviteten matchar den faktiska artefaktsökvägen.

"Alternativet Publicera med zip-distribution stöds inte för MSBuild-pakettypen"

Symtom

Distributionsuppgiften misslyckas med ett fel om att zip-distribution inte stöds för MSBuild-pakettyper.

Orsak

Webbpaket som skapats av MSBuild-aktiviteten (med standardargument) använder en kapslad mappstruktur som kräver webbdistribution för korrekt distribution. Alternativet zip-distribution kan inte hantera den aktuella paketstrukturen.

Lösning / Beslut

Använd AzureRmWebAppDeployment@4-uppgiften med Web Deploy i stället för zip-distribution, eller omstrukturera byggprocessen för att skapa en mappbaserad utdata. För att skapa en mapp från MSBuild, lägg till /p:PackageAsSingleFile=false-argumentet i din MSBuild-uppgift.

5xx-fel vid driftsättning

Symtom

Distributionsaktiviteten misslyckas med en 500, 502, 503 eller annan 5xx HTTP-felkod.

Orsak

Ett fel på serversidan inträffade i App Service eller dess underliggande infrastruktur. Vanliga orsaker är otillräcklig Kapacitet för App Service-plan, ett pågående Azure-avbrott eller att App Service är i ett stopp- eller feltillstånd.

Lösning / Beslut

  • Kontrollera Azure-status för pågående avbrott.
  • I Azure-portalen kontrollerar du att App Service körs och att App Service-planen har tillräcklig kapacitet.
  • Skala upp App Service-planen för att öka cpu-, RAM-minnet och diskutrymmet eller prova en annan plan.
  • Mer information om felet på serversidan finns i Kudu-loggarna.

Uppdateringen fastnar och misslyckas eller "503-tjänst inte tillgänglig"

Symtom

En distribution körs under en längre period och misslyckas till slut, ett 503 Service Unavailable fel uppstår eller så uppdateras inte distributionshistoriken i Kudu-loggarna.

Orsak

Dessa problem uppstår vanligtvis när App Service-planen inte har tillräckligt med kapacitet för att hantera distributionen tillsammans med det program som körs.

Lösning / Beslut

  • Skala upp App Service-instansen för att öka tillgängligt processor-, RAM-minne- och diskutrymme.
  • Prova att distribuera till en annan App Service-plan för att utesluta resurskonkurration.
  • Granska Kudu-diagnostikloggarna från Azure-portalen för specifika fel.
  • För distributioner utan avbrott använder du distributionsplatser med platsswappar i stället för att distribuera direkt till produktionsplats.

Nätverksanslutningsfel under distributionen

Symtom

Distributionsaktiviteten misslyckas med ett nätverksrelaterat fel, till exempel:

Could not connect to the remote computer ('<AppName>.scm.azurewebsites.net')

Orsak

Pipelineagenten kan inte nå App Services Kudu-slutpunkt (SCM-plats) på grund av brandväggsregler, proxykonfiguration eller nätverksbegränsningar.

Lösning / Beslut

Granska nätverkskonfigurationen för din agenttyp:

"Det gick inte att hämta åtkomsttoken för Azure"

Symtom

Distributionsuppgiften misslyckas med följande fel:

Could not fetch access token for Azure. Verify if the Service Principal used is valid and not expired.

Orsak

Tjänstens huvudnamn som stöder Azure-tjänstanslutningen har upphört att gälla, inaktiverats eller saknar de behörigheter som krävs.

Lösning / Beslut

Verifiera tjänstens huvudnamn i Microsoft Entra-ID och förnya hemligheten eller certifikatet om det har upphört att gälla. Detaljerade felsökningssteg finns i Felsöka Azure Resource Manager-tjänstanslutningar.

SSL-fel i distributionsuppgiften

Symtom

Distributionsuppgiften misslyckas med ett SSL-relaterat fel.

Orsak

App Service har ett problem med SSL-certifikatkonfigurationen, till exempel att använda ett ej betrott eller självsignerat certifikat.

Lösning / Beslut

Kontrollera att certifikatet som används av App Service är signerat av en betrodd certifikatutfärdare. Mer information finns i Lägga till och hantera TLS/SSL-certifikat i Azure App Service.

Felkoder för Web Deploy

Symtom

När du använder Web Deploy som distributionsmetod visar aktivitetsloggen en felkod för webbdistribution som ERROR_CONNECTION_NOT_FOUND, ERROR_DESTINATION_NOT_REACHABLEeller andra.

Orsak

Web Deploy påträffade ett problem med att kommunicera med eller distribuera till App Service.

Lösning / Beslut

Se Felkoder för webbdistribution för en fullständig lista över felkoder och deras lösningar.

"ERROR_FILE_IN_USE" när du distribuerar .NET-appar

Symtom

Distributionsuppgiften misslyckas med ett ERROR_FILE_IN_USE fel när du distribuerar ett .NET-program till App Service i Windows.

Orsak

Programfiler låses av den programprocess som körs under distributionen.

Lösning / Beslut

Aktivera följande alternativ i AzureRmWebAppDeployment@4 aktiviteten:

  • Byt namn på låsta filer (enableMSDeployAppOffline: true)
  • Ta appen offline (enableMSDeployRetry: true)

För distributioner med noll driftstopp använder du distributionsslotar med slot-swappar.

Appen har distribuerats men fungerar inte (Windows)

Symtom

Distributionen slutförs utan fel, men programmet svarar inte eller returnerar fel när du bläddrar till den.

Orsak

I Windows App Service krävs en web.config fil för många programtyper (till exempel Node.js eller Python). Om filen saknas kan IIS inte dirigera begäranden till ditt program.

Lösning / Beslut

Lägg till en web.config fil i programmets rot. Mer information finns i Konfigurera en anpassad container för Azure App Service och den ramverksspecifika vägledningen:

Distributionen av Function App misslyckas med AzureRmWebAppDeployment-uppgiften.

Symtom

Det går inte att distribuera en Azure-funktionsapp med hjälp av AzureRmWebAppDeployment@4 uppgiften.

Orsak

Uppgiften AzureRmWebAppDeployment@4 är utformad för App Service-distributioner och kanske inte hanterar funktionsappspecifika krav korrekt.

Lösning / Beslut

Använd Azure Functions-aktiviteten (AzureFunctionApp@1) i stället, som är särskilt utformad för distributioner av funktionsappar.