Aracılığıyla paylaş


.NET’te Web veya Çalışan rolünün yaşam döngüsünü özelleştirme

Önemli

Cloud Services (klasik), 1 Eylül 2024 itibarıyla tüm müşteriler için kullanım dışı bırakılmıştır. Mevcut tüm çalışan dağıtımlar Microsoft tarafından durdurulacak ve kapatılacak ve Veriler Ekim 2024'den itibaren kalıcı olarak kaybolacaktır. Yeni dağıtımlarda yeni Azure Resource Manager tabanlı dağıtım modeli Azure Cloud Services (genişletilmiş destek) kullanılmalıdır.

Bir çalışan rolü oluşturduğunuzda RoleEntryPoint sınıfını genişletirsiniz. Bu sınıf, yaşam döngüsü olaylarını yanıtlamanıza olanak tanıyan geçersiz kılma yöntemleri sağlar. Web rolleri için bu sınıf isteğe bağlıdır, bu nedenle yaşam döngüsü olaylarını yanıtlamak için bu sınıfı kullanmanız gerekir.

RoleEntryPoint sınıfını genişletme

RoleEntryPoint sınıfı, bir web veya çalışan rolünü başlattığında, çalıştırdığında veya durdurduğunda Azure tarafından çağrılan yöntemleri içerir. Rol başlatmayı, rol kapatma dizilerini veya rolün yürütme iş parçacığını yönetmek için isteğe bağlı olarak bu yöntemleri geçersiz kılabilirsiniz.

RoleEntryPoint'i genişletirken, yöntemlerin aşağıdaki davranışlarına dikkat etmeniz gerekir:

  • OnStart yöntemi bir boole değeri döndürür, bu nedenle bu yöntemden false döndürmek mümkündür.

    Kodunuz false döndürürse rol işlemi, herhangi bir kapatma sırası çalıştırmadan aniden sonlandırılır. Genel olarak, OnStart yönteminden false döndürmekten kaçınmalısınız.

  • Bir RoleEntryPoint yönteminin aşırı yüklemesinde yakalanmamış özel durumlar işlenmeyen özel durum olarak değerlendirilir.

    Yaşam döngüsü yöntemlerinden birinde bir özel durum oluşursa, Azure UnhandledException olayını başlatır ve işlem sonlandırılır. Rolünüz çevrimdışı olduktan sonra Azure rolü yeniden başlatır. İşlenmeyen bir özel durum oluştuğunda , Durdurma olayı tetiklenmez ve OnStop yöntemi çağrılmaz.

Rolünüz başlatılmazsa veya başlatma, meşgul ve durdurma durumları arasında geri dönüşüm gerçekleştiriyorsa, rolünüz her yeniden başlatıldığında yaşam döngüsü olaylarından birinde işlenmeyen bir özel durum oluşturmuş olabilir. Bu durumda, özel durumun nedenini belirlemek ve uygun şekilde işlemek için UnhandledException olayını kullanın. Rolünüz Run yönteminden de geri dönüyor olabilir ve bu da rolün yeniden başlatılmasına neden olur. Dağıtım durumları hakkında daha fazla bilgi için bkz . Rollerin Geri Dönüştürülmasına Neden Olan Yaygın Sorunlar.

Not

Uygulamanızı geliştirmek için Microsoft Visual Studio için Azure Araçları'nı kullanıyorsanız rol projesi şablonları, WebRole.cs ve WorkerRole.cs dosyalarında RoleEntryPoint sınıfını sizin için otomatik olarak genişletir.

OnStart yöntemi

OnStart yöntemi, rol örneğiniz Azure tarafından çevrimiçi duruma getirildiğinde çağrılır. OnStart kodu yürütülürken rol örneği Meşgul olarak işaretlenir ve yük dengeleyici hiçbir dış trafiği buna yönlendirmez. Olay işleyicileri uygulama ve Azure Tanılama başlatma gibi başlatma işlerini gerçekleştirmek için bu yöntemi geçersiz kılabilirsiniz.

OnStart true döndürürse örnek başarıyla başlatılır ve Azure RoleEntryPoint.Run yöntemini çağırır. OnStart false döndürürse, rol planlı kapatma dizileri yürütülmeden hemen sonlanır.

Aşağıdaki kod örneğinde OnStart yönteminin nasıl geçersiz kılınacak olduğu gösterilmektedir. Bu yöntem, rol örneği başlatıldığında bir tanılama izleyicisi yapılandırıp başlatır ve günlük verilerinin bir depolama hesabına aktarılmasını ayarlar:

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 yöntemi

OnStop yöntemi, Azure'lar rol örneğini çevrimdışına aldıktan sonra ve işlemden çıkmadan önce çağrılır. Rol örneğinizin temiz bir şekilde kapatılması için gereken kodu çağırmak için bu yöntemi geçersiz kılabilirsiniz.

Önemli

OnStop yönteminde çalışan kodun, kullanıcı tarafından başlatılan kapatma dışındaki nedenlerle çağrıldığında bitmek için sınırlı bir süresi vardır. Bu süre geçtikten sonra işlem sonlandırılır, bu nedenle OnStop yöntemindeki kodun hızlı bir şekilde çalışabileceğinden veya tamamlanmaya kadar çalışmadığından emin olmanız gerekir. Durdurma olayı tetiklendiğinde OnStop yöntemi çağrılır.

Run yöntemi

Rol örneğiniz için uzun süre çalışan bir iş parçacığı uygulamak için Run yöntemini geçersiz kılabilirsiniz.

Run yöntemini geçersiz kılma gerekli değildir; varsayılan uygulama sonsuza kadar uyuyan bir iş parçacığı başlatır. Run yöntemini geçersiz kılarsanız kodunuz süresiz olarak engellenmelidir. Run yöntemi döndürülürse, rol otomatik olarak geri dönüştürülür; başka bir deyişle, Azure Durduruluyor olayını başlatır ve kapatma dizilerinizin rol çevrimdışına alınmadan önce yürütülebilmesi için OnStop yöntemini çağırır.

Web rolü için ASP.NET yaşam döngüsü yöntemlerini uygulama

Bir web rolü için başlatma ve kapatma sıralarını yönetmek için RoleEntryPoint sınıfı tarafından sağlanan yöntemlere ek olarak ASP.NET yaşam döngüsü yöntemlerini kullanabilirsiniz. Bu yaklaşım, mevcut bir ASP.NET uygulamasını Azure'a taşımanız durumunda uyumluluk açısından yararlı olabilir. ASP.NET yaşam döngüsü yöntemleri RoleEntryPoint yöntemlerinin içinden çağrılır. Application_Start yöntemi RoleEntryPoint.OnStart yöntemi tamamlandıktan sonra çağrılır. Application_End yöntemi RoleEntryPoint.OnStop yöntemi çağrılmadan önce çağrılır.

Sonraki adımlar

Bulut hizmeti paketi oluşturmayı öğrenin.