Udostępnij za pośrednictwem


Typowe problemy, które powodują odtwarzanie ról usługi Azure Cloud Service (klasycznej)

Ważne

Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla nowych klientów i zostaną wycofane 31 sierpnia 2024 r. dla wszystkich klientów. Nowe wdrożenia powinny używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (wsparcie dodatkowe).

W tym artykule omówiono niektóre typowe przyczyny problemów z wdrażaniem i przedstawiono wskazówki dotyczące rozwiązywania problemów, które pomogą Ci rozwiązać te problemy. Wskazanie, że występuje problem z aplikacją, polega na tym, że nie można uruchomić wystąpienia roli lub przechodzi między stanami inicjowania, zajętości i zatrzymywania.

Jeśli problem z platformą Azure nie został rozwiązany w tym artykule, odwiedź fora platformy Azure w witrynach Microsoft Q & A i Stack Overflow. Możesz opublikować swój problem na tych forach lub opublikować go na @AzureSupport na Twitterze. Możesz również przesłać żądanie pomoc techniczna platformy Azure. Aby przesłać wniosek o pomoc techniczną, na stronie pomoc techniczna platformy Azure wybierz pozycję Uzyskaj pomoc techniczną.

Brak zależności środowiska uruchomieniowego

Jeśli rola w aplikacji opiera się na jakimkolwiek zestawie, który nie jest częścią struktury .NET Framework lub biblioteki zarządzanej platformy Azure, musisz jawnie dołączyć ten zestaw do pakietu aplikacji. Należy pamiętać, że inne struktury firmy Microsoft nie są domyślnie dostępne na platformie Azure. Jeśli Twoja rola opiera się na takiej strukturze, należy dodać te zestawy do pakietu aplikacji.

Przed skompilowaniem i spakowaniem aplikacji sprawdź następujące kwestie:

  • W przypadku korzystania z programu Visual Studio upewnij się, że właściwość Copy Local (Kopiuj lokalnie ) ma wartość True dla każdego zestawu, do którego odwołuje się dany zestaw w projekcie, który nie jest częścią zestawu Azure SDK lub programu .NET Framework.
  • Upewnij się, że plik web.config nie odwołuje się do żadnych nieużywanych zestawów w elemencie kompilacji.
  • Akcja kompilacji każdego pliku cshtml jest ustawiona na Zawartość. Dzięki temu pliki w pakiecie będą wyświetlane poprawnie, a inne pliki, do których występują odwołania, będą widoczne w pakiecie.

Zestaw jest przeznaczony dla niewłaściwej platformy.

Platforma Azure to środowisko 64-bitowe. W związku z tym zestawy platformy .NET skompilowane dla 32-bitowego obiektu docelowego nie będą działać na platformie Azure.

Rola zgłasza nieobsługiwane wyjątki podczas inicjowania lub zatrzymywania

Wszelkie wyjątki zgłaszane przez metody klasy RoleEntryPoint , która obejmuje metody OnStart, OnStop i Run , są nieobsługiwane wyjątki. Jeśli w jednej z tych metod wystąpi nieobsługiwany wyjątek, rola zostanie odzyskana. Jeśli rola jest powtarzana wielokrotnie, może zgłaszać nieobsługiwany wyjątek za każdym razem, gdy próbuje się uruchomić.

Rola jest zwracana przez metodę Run

Metoda Run jest przeznaczona do uruchamiania w nieskończoność. Jeśli kod zastąpi metodę Run , powinien zostać uśpiony przez czas nieokreślony. Jeśli metoda Run zwróci, odtwarzanie roli.

Niepoprawne ustawienie Diagnostyka Połączenie ionString

Jeśli aplikacja używa Diagnostyka Azure, plik konfiguracji usługi musi określić DiagnosticsConnectionString ustawienie konfiguracji. To ustawienie powinno określać połączenie HTTPS z kontem magazynu na platformie Azure.

Aby upewnić się, że DiagnosticsConnectionString ustawienie jest poprawne przed wdrożeniem pakietu aplikacji na platformie Azure, sprawdź następujące kwestie:

  • Ustawienie DiagnosticsConnectionString wskazuje prawidłowe konto magazynu na platformie Azure.
    Domyślnie to ustawienie wskazuje na emulowane konto magazynu, dlatego przed wdrożeniem pakietu aplikacji należy jawnie zmienić to ustawienie. Jeśli to ustawienie nie zostanie zmienione, zostanie zgłoszony wyjątek, gdy wystąpienie roli spróbuje uruchomić monitor diagnostyczny. Może to spowodować odtwarzanie wystąpienia roli na czas nieokreślony.
  • Parametry połączenia jest określony w następującym formacie. (Protokół musi być określony jako HTTPS). Zastąp ciąg MyAccountName nazwą konta magazynu i ciągiem MyAccountKey swoim kluczem dostępu:
DefaultEndpointsProtocol=https;AccountName=MyAccountName;AccountKey=MyAccountKey

Jeśli tworzysz aplikację przy użyciu narzędzi Azure Tools for Microsoft Visual Studio, możesz użyć stron właściwości, aby ustawić tę wartość.

Wyeksportowany certyfikat nie zawiera klucza prywatnego

Aby uruchomić rolę internetową w ramach protokołu TLS, upewnij się, że wyeksportowany certyfikat zarządzania zawiera klucz prywatny. Jeśli używasz Menedżera certyfikatów systemu Windows do wyeksportowania certyfikatu, pamiętaj, aby wybrać opcję Tak dla opcji Eksportuj klucz prywatny. Certyfikat musi zostać wyeksportowany w formacie PFX, który jest obecnie jedynym obsługiwanym formatem.

Następne kroki

Zobacz więcej artykułów dotyczących rozwiązywania problemów dotyczących usług w chmurze.

Zobacz więcej scenariuszy recyklingu ról w serii blogów Kevina Williamsona.