Dela via


Anpassa livscykeln för en webb- eller arbetsroll i .NET

Viktigt

Cloud Services (klassisk) är nu inaktuell för nya kunder och kommer att dras tillbaka den 31 augusti 2024 för alla kunder. Nya distributioner bör använda den nya Azure Resource Manager-baserade distributionsmodellen Azure Cloud Services (utökad support).

När du skapar en arbetsroll utökar du klassen RoleEntryPoint som innehåller metoder som du kan åsidosätta så att du kan svara på livscykelhändelser. För webbroller är den här klassen valfri, så du måste använda den för att svara på livscykelhändelser.

Utöka klassen RoleEntryPoint

Klassen RoleEntryPoint innehåller metoder som anropas av Azure när den startar, kör eller stoppar en webb- eller arbetsroll. Du kan också åsidosätta dessa metoder för att hantera rollinitiering, rollavstängningssekvenser eller körningstråden för rollen.

När du utökar RoleEntryPoint bör du vara medveten om följande beteenden för metoderna:

  • Metoden OnStart returnerar ett booleskt värde, så det är möjligt att returnera falskt från den här metoden.

    Om koden returnerar falskt avslutas rollprocessen plötsligt, utan att någon avstängningssekvens körs. I allmänhet bör du undvika att returnera false från metoden OnStart .

  • Alla ohanterade undantag i en överlagring av en RoleEntryPoint-metod behandlas som ett ohanterat undantag.

    Om ett undantag inträffar inom någon av livscykelmetoderna genererar Azure händelsen UnhandledException och sedan avslutas processen. När din roll har tagits offline startas den om av Azure. När ett ohanterat undantag inträffar aktiveras inte stop-händelsen och metoden OnStop anropas inte.

Om din roll inte startar eller återvinner mellan initierings-, upptagen- och stopptillstånden kan koden utlösa ett ohanterat undantag inom en av livscykelhändelserna varje gång rollen startas om. I det här fallet använder du unhandledException-händelsen för att fastställa orsaken till undantaget och hantera det på rätt sätt. Din roll kanske också returneras från run-metoden , vilket gör att rollen startas om. Mer information om distributionstillstånd finns i Vanliga problem som gör att roller återanvänds.

Anteckning

Om du använder Azure Tools for Microsoft Visual Studio för att utveckla ditt program utökar rollprojektmallarna automatiskt Klassen RoleEntryPoint åt dig i filerna WebRole.cs och WorkerRole.cs .

OnStart-metod

Metoden OnStart anropas när din rollinstans tas online av Azure. Medan OnStart-koden körs markeras rollinstansen som Upptagen och ingen extern trafik dirigeras till den av lastbalanseraren. Du kan åsidosätta den här metoden för att utföra initieringsarbete, till exempel implementera händelsehanterare och starta Azure Diagnostics.

Om OnStart returnerar true initieras instansen och Azure anropar metoden RoleEntryPoint.Run . Om OnStart returnerar falskt avslutas rollen omedelbart utan att några planerade avstängningssekvenser körs.

I följande kodexempel visas hur du åsidosätter metoden OnStart . Den här metoden konfigurerar och startar en diagnostikövervakare när rollinstansen startar och konfigurerar en överföring av loggningsdata till ett lagringskonto:

public override bool OnStart()
{
    var config = DiagnosticMonitor.GetDefaultInitialConfiguration();

    config.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter = LogLevel.Error;
    config.DiagnosticInfrastructureLogs.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);

    DiagnosticMonitor.Start("DiagnosticsConnectionString", config);

    return true;
}

OnStop-metod

OnStop-metoden anropas när en rollinstans har tagits offline av Azure och innan processen avslutas. Du kan åsidosätta den här metoden för att anropa kod som krävs för att rollinstansen ska stängas av.

Viktigt

Kod som körs i OnStop-metoden har en begränsad tid att slutföra när den anropas av andra orsaker än en användarinitierad avstängning. När den här tiden har gått avslutas processen, så du måste se till att koden i OnStop-metoden kan köras snabbt eller tolererar att den inte körs för att slutföras. OnStop-metoden anropas efter att händelsen Stoppa har aktiverats.

Körningsmetod

Du kan åsidosätta run-metoden för att implementera en tidskrävande tråd för din rollinstans.

Det krävs ingen tvingande körningsmetod . standardimplementeringen startar en tråd som är i viloläge för alltid. Om du åsidosätter run-metoden bör koden blockeras på obestämd tid. Om run-metoden returnerar återanvänds rollen automatiskt. Med andra ord genererar Azure stop-händelsen och anropar metoden OnStop så att dina avstängningssekvenser kan köras innan rollen tas offline.

Implementera ASP.NET livscykelmetoder för en webbroll

Du kan använda ASP.NET livscykelmetoder utöver de som tillhandahålls av klassen RoleEntryPoint för att hantera initierings- och avstängningssekvenser för en webbroll. Detta kan vara användbart i kompatibilitetssyfte om du porterar ett befintligt ASP.NET-program till Azure. De ASP.NET livscykelmetoderna anropas från RoleEntryPoint-metoderna . Metoden Application_Start anropas när metoden RoleEntryPoint.OnStart har slutförts. Metoden Application_End anropas innan metoden RoleEntryPoint.OnStop anropas.

Nästa steg

Lär dig hur du skapar ett molntjänstpaket.