Anpassa livscykeln för en webb- eller arbetsroll i .NET
Viktigt!
Cloud Services (klassisk) är nu inaktuellt för alla kunder från och med den 1 september 2024. Alla befintliga distributioner som körs stoppas och stängs av av Microsoft och data kommer att förloras kontinuerligt från och med oktober 2024. 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örs eller stoppar en webb- eller arbetsroll. Du kan också åsidosätta dessa metoder för att hantera rollinitiering, sekvenser för att stänga av roll eller rollens körningstråd.
När du utökar RoleEntryPoint bör du vara medveten om följande metoder:
Metoden OnStart returnerar ett booleskt värde, så det går att returnera false från den här metoden.
Om koden returnerar false avslutas rollprocessen plötsligt, utan att någon avstängningssekvens kan ha körts. I allmänhet bör du undvika att returnera false från metoden OnStart .
Alla ohanterade undantag inom 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 gått offline startar Azure om den. När ett ohanterat undantag inträffar aktiveras inte stopphändelsen och metoden OnStop anropas inte.
Om din roll inte startar eller återanvänds 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 händelsen UnhandledException för att fastställa orsaken till undantaget och hantera det på rätt sätt. Din roll kan 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.
Kommentar
Om du använder Azure Tools för Microsoft Visual Studio för att utveckla ditt program utökar rollprojektmallarna automatiskt Klassen RoleEntryPoint åt dig i WebRole.cs - och WorkerRole.cs-filerna .
OnStart-metod
Metoden OnStart anropas när din rollinstans tas online av Azure. Medan OnStart-koden körs markeras rollinstansen som Upptagen och lastbalanseraren dirigerar inte någon extern trafik till den. Du kan åsidosätta den här metoden för att utföra initieringsarbete, till exempel att implementera händelsehanterare och starta Azure Diagnostics.
Om OnStart returnerar true initieras instansen och Azure anropar metoden RoleEntryPoint.Run . Om OnStart returnerar false 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 Azures tar en rollinstans offline 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. Efter den här tiden avslutas processen, så du måste se till att koden i OnStop-metoden kan köras snabbt eller tolererar att den inte körs till slutförande. OnStop-metoden anropas efter att händelsen Stoppa har aktiverats.
Kör-metod
Du kan åsidosätta run-metoden för att implementera en långvarig tråd för rollinstansen.
Det krävs inte att körningsmetoden åsidosätts. Standardimplementeringen startar en tråd som för evigt är i viloläge. Om du åsidosätter metoden Kör bör koden blockeras på obestämd tid. Om run-metoden returneras återanvänds rollen automatiskt. Med andra ord genererar Azure stop-händelsen och anropar metoden OnStop så att avstängningssekvenserna 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 metoder som tillhandahålls av klassen RoleEntryPoint för att hantera initierings- och avstängningssekvenser för en webbroll. Den här metoden kan vara användbar i kompatibilitetssyfte om du porterar ett befintligt ASP.NET program till Azure. De ASP.NET livscykelmetoderna anropas inifrå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.