.NET'te Web veya Çalışan rolünün Yaşam Döngüsünü Özelleştirme

Önemli

Cloud Services (klasik) artık yeni müşteriler için kullanımdan kaldırılmıştır ve tüm müşteriler için 31 Ağustos 2024'te kullanımdan kaldırılacaktı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, yaşam döngüsü olaylarına yanıt vermenizi sağlayan geçersiz kılma yöntemleri sağlayan RoleEntryPoint sınıfını genişletirsiniz. 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 bunu 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 sıralarını 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ından haberdar olmanız 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.

  • RoleEntryPoint yönteminin aşırı yüklemesinde yakalanmamış özel durumlar, işlenmeyen bir özel durum olarak kabul edilir.

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

Rolünüz başlatılamıyorsa veya başlatma, meşgul ve durdurma durumları arasında geri dönüştürüliyorsa, rol her yeniden başlatıldığında kodunuz yaşam döngüsü olaylarından birinde işlenmeyen bir özel durum oluşturuyor olabilir. Bu durumda, özel durumun nedenini belirlemek ve uygun şekilde işlemek için UnhandledException olayını kullanın. Rolünüz , rolün yeniden başlatılmasına neden olan Run yönteminden de geri dönüyor olabilir. Dağıtım durumları hakkında daha fazla bilgi için bkz. Rollerin Geri Dönüşümüne 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

Rol örneğiniz Azure tarafından çevrimiçi olduğunda OnStart yöntemi çağrılır. OnStart kodu yürütülürken rol örneği Meşgul olarak işaretlenir ve yük dengeleyici tarafından bu koda hiçbir dış trafik yönlendirilmeyecektir. Olay işleyicileri uygulama ve Azure Tanılama başlatma gibi başlatma çalışmalarını gerçekleştirmek için bu yöntemi geçersiz kılabilirsiniz.

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

Aşağıdaki kod örneği , OnStart yönteminin nasıl geçersiz kılınacaklarını gösterir. 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ımı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

Bir rol örneği Azure tarafından çevrimdışına alındıktan sonra ve işlemden çıkmadan önce OnStop yöntemi ç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ıştırılan kodun, kullanıcı tarafından başlatılan kapatma dışında 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ıştırıldığından veya tamamlanmaya kadar çalışmamasını tolere edebildiğinden 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 engellemelidir. Run yöntemi döndürülüyorsa rol otomatik olarak düzgün bir şekilde geri dönüştürülür; Başka bir deyişle, Azure Durdurma olayını başlatır ve kapatma sıralarınızın rol çevrimdışı duruma geçmeden ö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ğlananlara ek olarak ASP.NET yaşam döngüsü yöntemlerini kullanabilirsiniz. Bu, 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öntemleri 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.