Aracılığıyla paylaş


Başlatılmayen Azure Cloud Services (genişletilmiş destek) rol örnekleriyle ilgili sorunları giderme

Bu makalede, Azure Cloud Services (genişletilmiş destek) rol örneklerinde başlatma hatalarının nasıl giderılacağı açıklanır.

Sorun giderme denetim listesi

Rol örneklerinde oluşan sorunları tanılamak için aşağıdaki seçeneklerden birini belirleyin.

1. Seçenek: Özel hataları kapatma

Tam hata bilgilerini görüntülemek için web rolünün Web.config dosyasını açın, özel hata modunu olarak Offayarlayın ve ardından hizmeti yeniden dağıtın:

  1. Visual Studio'da çözümü açın.

  2. Çözüm Gezgini Web.configdosyasını açın.

  3. system.web bölümünde aşağıdaki XML kodunu ekleyin:

    <customErrors mode="Off" />
    
  4. Dosyayı kaydedin.

  5. Hizmeti yeniden paketleme ve yeniden dağıtma.

Hizmet yeniden dağıtıldıktan sonra, hizmet hakkında alabileceğiniz hata iletileri eksik derlemelerin veya DLL'lerin adlarını içerir.

Seçenek 2: Rol örneği durumunu görüntülemek için PowerShell kullanma

Rol örneğinin çalışma zamanı durumu hakkında bilgi almak için Get-AzCloudServiceRoleInstanceView cmdlet'ini çalıştırın:

$roleInstanceView = @{
    CloudServiceName = "<cloud-service-name>"
    ResourceGroupName = "<resource-group-name>"
    RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView

Rol örneğinin durumu, aşağıdaki örnek çıktıda gösterildiği gibi ilk sütunda listelenir:

Statuses            PlatformFaultDomain PlatformUpdateDomain
--------            ------------------- --------------------
{RoleStateStarting} 0                   0

Seçenek 3: Rol örneği durumunu görüntülemek için Azure portal kullanın

Azure portal bir rol örneğiyle ilgili durum bilgilerini görüntülemek için şu adımları izleyin:

  1. Azure portal, Bulut hizmetleri (genişletilmiş destek) için arama yapın ve seçin.

  2. Bulut hizmetleri listesinde bulut hizmetinizin adını seçin.

  3. Menü bölmesinde Ayarlar'ın altına bakın ve ardından Roller ve Örnekler'i seçin.

  4. Rol örneğinin adını seçin.

  5. Rol örneği bölmesinde, Durum alanındaki rol örneğinin durumunu not edin.

Seçenek 4: Hata bilgilerini görüntülemek için Uzak Masaüstü'nü kullanma

Role erişmek ve tüm hata bilgilerini görüntülemek için aşağıdaki adımları izleyerek Uzak Masaüstü Protokolü'nü (RDP) kullanın:

  1. Azure Cloud Services (genişletilmiş destek) için Uzak Masaüstü uzantısını ekleyin.

  2. Azure portal, bulut hizmeti örneği Hazır durumu gösterdiğinde, bulut hizmetinde oturum açmak için Uzak Masaüstü'nü kullanın. Daha fazla bilgi için bkz. Uzak Masaüstü kullanarak rol örneklerine bağlanma.

  3. Uzak Masaüstü'nü ayarlamak için kullandığınız kimlik bilgilerini kullanarak sanal makinede (VM) oturum açın.

  4. Bir Komut İstemi penceresi açın.

  5. ipconfig komutunu çalıştırın. IPv4 adresi için döndürülen değeri kopyalayın.

  6. Bir web tarayıcısı açın.

  7. Adres çubuğuna IPv4 adresini yapıştırın ve ardından bir eğik çizgi ve web uygulaması varsayılan dosyasının adını ekleyin. Örneğin, http://<ipv4-address>/default.aspx.

Şimdi web sitesine giderseniz daha fazla bilgi içeren hata iletileri görürsünüz. İşte bir örnek:

'/' Uygulamasında Sunucu Hatası.

'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' dosyası veya derlemesi veya bağımlılıklarından biri yüklenemedi. Sistem belirtilen dosyayı bulamıyor.

Açıklama: Geçerli web isteğinin yürütülmesi sırasında işlenmeyen bir özel durum oluştu. Hata ve kodun kaynağı hakkında daha fazla bilgi için lütfen yığın izlemesini gözden geçirin.

Özel Durum Ayrıntıları: System.IO.FileNotFoundException

Seçenek 5: İşlem Öykünücüsü'yü kullanma

Eksik bağımlılıklar ve Web.config hatalarıyla ilgili sorunları tanılamak ve gidermek için Azure İşlem Öykünücüsü'ni kullanabilirsiniz. Sorunları tanılamak için bu yöntemi kullandığınızda en iyi sonuçları elde etmek için, temiz bir Windows yüklemesi olan bir bilgisayar veya VM kullanın.

Azure İşlem Öykünücüsü'ni kullanarak sorunları tanılamak için:

  1. Azure SDK'sını yükleyin.

  2. Geliştirme bilgisayarında bulut hizmeti projesini oluşturun.

  3. Dosya Gezgini bulut hizmeti projesinde bin\debug klasörüne gidin.

  4. .csx klasörünü ve .cscfg dosyasını, sorunlarda hata ayıklamak için kullandığınız bilgisayara kopyalayın.

  5. Temiz bilgisayarda bir Azure SDK Komut İstemi penceresi açın.

  6. Komut isteminde aşağıdaki csrun komutu çalıştırın:

    csrun.exe /devstore:start
    
  7. Aşağıdaki komutu çalıştırın:

    run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
    

    Rol başladığında, web tarayıcısı ayrıntılı hata bilgilerini görüntüler.

Daha fazla tanılama gerekiyorsa standart Windows sorun giderme araçlarını kullanabilirsiniz.

Seçenek 6: IntelliTrace kullanma

Not

Visual Studio 2022'de IntelliTrace kullanamazsınız. Visual Studio 2019, 2017 veya 2015 kullanıyorsanız IntelliTrace hala kullanılabilir.

.NET Framework 4 kullanan çalışan ve web rolleri için IntelliTrace kullanabilirsiniz. IntelliTrace, Visual Studio Enterprise'de kullanılabilir.

IntelliTrace açıkken bulut hizmetinizi dağıtmak için:

  1. Azure SDK 1.3 veya sonraki bir sürümün yüklü olduğunu doğrulayın.

  2. Visual Studio'da çözümü dağıtın. Dağıtımı ayarlarken .NET 4 rolleri için IntelliTrace'i etkinleştir onay kutusunu seçin.

  3. Rol örneği başlatıldıktan sonra Sunucu Gezgini'ni açın.

  4. Azure\Cloud Services düğümünü genişletin.

  5. Rol örneklerini listelemek için dağıtımı genişletin. Ardından bir rol örneğine sağ tıklayın.

  6. IntelliTrace günlüklerini görüntüle'yi seçin.

  7. IntelliTrace Özeti'ndeÖzel Durum Verileri'ne gidin ve bu düğümü genişletin.

  8. Özel durumlar listesinde, System.IO.FileNotFoundExceptionTür sütun değerini içeren bir satır bulun. İlgili İleti sütun değeri aşağıdaki metne benzemelidir:

    'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' dosyası veya derlemesi veya bağımlılıklarından biri yüklenemedi. Sistem belirtilen dosyayı bulamıyor.

Neden 1: RoleInstanceStartupTimeoutError nedeniyle bulut hizmeti işlemi başarısız oluyor

Azure Cloud Services'daki rol örneklerinden biri veya daha fazlası (genişletilmiş destek) yavaş başlatılabilir. Ya da rol örneğinin geri dönüştürülmesi veya meşgul durumda takılması ve beklendiği gibi başlatılmaması olabilir. Bu durumda rol RoleInstanceStartupTimeoutError uygulaması hata iletisi görüntülenir.

Rol uygulaması, rol geri dönüşümüne neden olabilecek iki bölüm içerir:

Rol durursa hizmet olarak platform (PaaS) aracısı rolü yeniden başlatır.

Sorunun başlangıç görevinden kaynaklanıp kaynaklanmamış olduğunu belirlemek için şu adımları izleyin:

  1. Sorunlu rol örneğine bağlanmak için Uzak Masaüstü'nü kullanmayı deneyin.

  2. Rol örneğine bağlandıktan sonra Başlat'ı seçin ve ardından Görev Yöneticisi'ni arayıp seçin.

  3. İşlemlerin listesini görmek için Görev Yöneticisi'ndeAyrıntılar sekmesini seçin.

  4. WaIISHost.exe (WebRole için) veya WaWorkerHost.exe (WorkerRole için) için işlemler olup olmadığını denetleyin. Bu işlemlerin her ikisi de eksikse, büyük olasılıkla bir başlangıç görevi başarısız oluyordur.

Sorunun bir başlangıç görevinden kaynaklandığını doğrulayabildiniz mi? Bu durumda aşağıdaki çözümü uygulayabilirsiniz. Ancak, çözüm yalnızca başlangıç görevi basit veya ön plan göreviyse kullanılabilir. Çözüm, arka plan başlangıç görevleri için geçerli değildir. Bunlar, rolün başlangıcıyla paralel olarak zaman uyumsuz olarak çalıştırılır.

Çözüm: Başlangıç görevi betiğinde hata ayıklama

Başlangıç görevi hatasını gidermek için VM başlatma sırasında çalışan betiğin hatalarını ayıklayabilirsiniz. Bu başlangıç görevi betiği Startup.cmd dosyasıdır. Betikteki sorunları araştırmanıza yardımcı olmak için aşağıdaki seçeneklerden birini belirleyebilirsiniz:

  • C:\Resources\WaHostBootstrapper.log günlük dosyasını görüntüleyin. Bu dosya, WaHostBootstrapper.exe işleminin günlüğüdür. Bu işlem başlangıç görevlerinin sorumluluğundadır. Bu, Windows Azure klasik VM mimarisinin iş akışında açıklanmıştır. Ardından, Startup.cmd çalıştırmayı içeren herhangi bir hatayı veya özel durumu arayın. Özellikle çıkış kodunun 0 olup olmadığını doğrulayın. Değilse, başlangıç görevi tamamlandı ancak hatalar var. Betiğin çıkış koduyla ilgili günlükler yoksa, başlatma görevi çalışmaya devam eder.

  • Beklenen iş etkisi nedeniyle başlangıç görevi betiği üretim ortamında serbestçe çalıştırılamıyorsa, komut satırında günlüğe kaydetme mekanizmasını özelleştirin. Örneğin, bir betik komutundaki anahtar bilgilerinin çıkışını bir dosyaya yeniden yönlendirebilirsiniz. Bunu yapmanızın bir yolu, komutun sonuna eklemektir > "%TEMP%\StartupLog.txt" .

  • Komut satırında, başlangıç görevi betiğini el ile çalıştırın. WebRole veya WorkerRole rolleri için bu betiğin konumları aşağıdaki tabloda gösterilmiştir.

    Rol Betik konumu
    WebRole E:\approot\bin\Startup.cmd
    WorkerRole E:\approot\Startup.cmd

Neden 2: DLL'ler veya derlemeler eksik

Durumlar arasında geçiş yapılan yanıt vermeyen rol örnekleri ve rol örnekleri eksik DLL'lerden veya derlemelerden kaynaklanabilir.

Eksik DLL'lerin veya derlemelerin bazı belirtileri şunlardır:

  • Rol örneğiniz Başlatma, Meşgul ve Durduruluyor durumlarında döngü oluşturur.

  • Rol örneğiniz Hazır durumuna taşındı, ancak sayfa web uygulamanızda görünmüyor.

Bir web sitesi bir web rolünde dağıtılıyorsa ve bir DLL eksikse, aşağıdaki sunucu çalışma zamanı hata iletisini görüntüleyebilir.

'/' Uygulamasında Sunucu Hatası.

Çalışma Zamanı Hatası

Açıklama: Sunucuda bir uygulama hatası oluştu. Bu uygulamanın geçerli özel hata ayarları, uygulama hatasının ayrıntılarının uzaktan görüntülenmesini engeller (güvenlik nedenleriyle). Ancak, yerel sunucu makinesinde çalışan tarayıcılar tarafından görüntülenebilir.

Şey: Bu özel hata iletisinin ayrıntılarının uzak makinede görüntülenebilmesini sağlamak için lütfen geçerli web uygulamasının kök dizininde bulunan "web.config" yapılandırma dosyası içeren bir etiket oluşturun<customErrors>. Bu <customErrors> etiketin "" özniteliği "modeOff" olarak ayarlanmalıdır.

Çözüm: Eksik DLL'leri ve derlemeleri çözme

Eksik DLL'lerin ve derlemelerin hatalarını çözmek için:

  1. Visual Studio'da çözümü açın.

  2. Çözüm Gezgini'da Başvurular klasörünü açın.

  3. Hata iletisinde tanımlanan derlemeyi seçin.

  4. Özellikler'deYereli Kopyala özelliğini True olarak ayarlayın.

  5. Bulut hizmetini yeniden dağıtın.

Hataların artık görünmediğini doğruladıktan sonra hizmeti yeniden dağıtın. Dağıtımı ayarlarken .NET 4 rolleri için IntelliTrace'i etkinleştir onay kutusunu seçmeyin.

Sonraki adımlar

Daha fazla bilgi

Klasik Bulut Hizmeti'ndeki başlangıç görevlerine ilişkin ilk yapılandırma, yürütme ve örnekler hakkında bilgi için aşağıdaki makalelere bakın:

Yardım için bize ulaşın

Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.