Udostępnij za pośrednictwem


Typowe problemy, które powodują ponowne uruchamianie ról usługi klasycznej Azure Cloud Service

Ważne

Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla wszystkich klientów od 1 września 2024 r. Wszystkie istniejące uruchomione wdrożenia zostaną zatrzymane i zamknięte przez firmę Microsoft, a dane zostaną trwale utracone od października 2024 r. 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.

Brak zależności środowiska uruchomieniowego

Jeśli rola w aplikacji opiera się na jakimkolwiek zestawie, który nie jest częścią programu .NET Framework lub biblioteki zarządzanej platformy Azure, musisz jawnie dołączyć ten zestaw do pakietu aplikacji. Pamiętaj, ż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 skompilowanie i spakowanie aplikacji sprawdź, czy następujące instrukcje są prawdziwe:

  • 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 ani 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ść. To ustawienie zapewnia, że pliki są wyświetlane poprawnie w pakiecie i umożliwiają wyświetlenie w pakiecie innych plików, do których się odwołujesz.

Kompilacja jest przeznaczona dla niewłaściwej platformy.

Platforma Azure to środowisko 64-bitowe. W związku z tym zestawy platformy .NET skompilowane dla obiektu docelowego 32-bitowego nie są zgodne z platformą 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 się resetuje. Jeśli rola jest wielokrotnie restartowana, może za każdym razem zgłaszać nieobsługiwany wyjątek, gdy próbuje się uruchomić.

Rola jest zwracana przez metodę Run

Metoda Run jest przeznaczona do nieprzerwanego działania. Jeśli kod zastąpi metodę Run , powinien zostać uśpiony przez czas nieokreślony. Jeśli metoda Run zwróci wartość, rola zostanie zresetowana.

Nieprawidłowe ustawienie DiagnosticsConnectionString

Jeśli aplikacja używa Azure Diagnostics, plik konfiguracji usługi musi zawierać element konfiguracji DiagnosticsConnectionString. Ustawienie to powinno określać połączenie HTTPS do konta magazynu na platformie Azure.

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

  • 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 nie zmienisz tego ustawienia, wyjątek zostanie zgłoszony, gdy instancja roli spróbuje uruchomić monitor diagnostyczny. To zdarzenie może spowodować odtwarzanie wystąpienia roli na czas nieokreślony.
  • Parametry połączenia są określone w następującym formacie. (Protokół musi być określony jako HTTPS). Zastąp MyAccountName nazwą swojego konta magazynowania oraz MyAccountKey swoim kluczem dostępu:
DefaultEndpointsProtocol=https;AccountName=MyAccountName;AccountKey=MyAccountKey

Jeśli tworzysz aplikację przy użyciu narzędzi platformy Azure dla programu 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 obszarze Transport Layer Security (TLS), musisz upewnić 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 należy wyeksportować w formacie pfx, który jest jedynym obsługiwanym obecnie 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.