Allgemeine Probleme, durch die Azure Cloud Service-Rollen (klassisch) zyklisch ausgeführt werden

Wichtig

Cloud Services (klassisch) wurde für neue Kunden nun als veraltet gekennzeichnet und wird am 31. August 2024 für alle Kunden ausgemustert. In neuen Bereitstellungen sollte das neue auf Azure Resource Manager basierende Bereitstellungsmodell für Azure Cloud Services (erweiterter Support) verwendet werden.

In diesem Artikel sind einige der allgemeinen Ursachen für Bereitstellungsprobleme sowie Tipps zur Problembehandlung aufgeführt, mit denen Sie diese Probleme beheben können. Wenn die Rolleninstanz nicht gestartet wird oder zwischen den Zuständen „Initialisieren“, „Ausgelastet“ und „Beenden“ wechselt, weist dies auf ein Problem mit einer Anwendung hin.

Besuchen Sie die Azure-Foren von Microsoft Q&A und Stack Overflow, falls Sie Ihr Azure-Problem mit diesem Artikel nicht beheben konnten. Sie können Ihr Problem in diesen Foren oder an @AzureSupport auf Twitter posten. Sie können auch eine Azure-Supportanfrage senden. Wenn Sie eine Supportanfrage senden möchten, wählen Sie auf der Azure-Support-Seite die Option Support erhalten aus.

Fehlende Laufzeitabhängigkeiten

Wenn eine Rolle in Ihrer Anwendung auf einer Assembly basiert, die nicht Teil von .NET Framework oder der von Azure verwalteten Bibliothek ist, müssen Sie diese Assembly explizit in das Anwendungspaket einschließen. Bedenken Sie, dass andere Microsoft-Frameworks nicht standardmäßig in Azure verfügbar sind. Wenn Ihre Rolle auf solch einem Framework basiert, müssen Sie dem Anwendungspaket diese Assemblys hinzufügen.

Überprüfen Sie vor dem Erstellen und Packen der Anwendung Folgendes:

  • Vergewissern Sie sich bei der Verwendung von Visual Studio, dass für jede referenzierte Assembly im Projekt, die nicht Teil von Azure SDK oder .NET Framework ist, die Eigenschaft Lokale Kopie auf True festgelegt ist.
  • Stellen Sie sicher, dass die Datei „web.config“ nicht auf nicht verwendete Assemblys im Element „compilation“ verweist.
  • Der Buildvorgang jeder CSHTML-Datei ist auf Inhalt festgelegt. Dadurch wird sichergestellt, dass die Dateien im Paket ordnungsgemäß angezeigt werden, und das Anzeigen anderer referenzierter Dateien im Paket ermöglicht.

Die Assembly ist auf eine falsche Plattform ausgerichtet.

Azure ist eine 64-Bit-Umgebung. Aus diesem Grund funktionieren für eine 32-Bit-Umgebung kompilierte .NET-Assemblys nicht in Azure.

Eine Rolle löst beim Initialisieren oder Beenden Ausnahmefehler aus.

Von den Methoden der RoleEntryPoint-Klasse ausgelöste Ausnahmen sind Ausnahmefehler. Zu diesen Methoden zählen OnStart, OnStop und Ausführen. Wenn ein Ausnahmefehler in einer der folgenden Methoden auftritt, wird die Rolle zyklisch ausgeführt. Wenn die Rolle zyklisch ausgeführt wird, wird bei jedem versuchten Start möglicherweise ein Ausnahmefehler ausgelöst.

Die Rolle wird von der Run-Methode reaktiviert.

Die Methode Ausführen ist für die Ausführung auf unbestimmte Zeit ausgelegt. Wenn Ihr Code die Ausführen -Methode außer Kraft setzt, sollte sie sich für unbegrenzte Zeit im Ruhezustand befinden. Wird die Ausführen -Methode jedoch reaktiviert, wird die Rolle zyklisch ausgeführt.

Falsche DiagnosticsConnectionString-Einstellung

Wenn die Anwendung die Azure-Diagnose verwendet, muss Ihre Dienstkonfigurationsdatei die Konfigurationseinstellung DiagnosticsConnectionString angeben. Diese Einstellung muss eine HTTPS-Verbindung zum Speicherkonto in Azure angeben.

Überprüfen Sie vor der Bereitstellung des Anwendungspakets in Azure Folgendes, um sicherzustellen, dass die Einstellung DiagnosticsConnectionString korrekt ist:

  • Die Einstellung DiagnosticsConnectionString verweist auf ein gültiges Speicherkonto in Azure.
    Standardmäßig verweist diese Einstellung auf das emulierte Speicherkonto. Daher müssen Sie diese Einstellung explizit ändern, bevor Sie das Anwendungspaket bereitstellen. Wenn Sie diese Einstellung nicht ändern, wird eine Ausnahme ausgelöst, wenn die Rolleninstanz versucht, den Diagnosemonitor zu starten. Dies kann dazu führen, dass die Rolleninstanz unbegrenzt zyklisch ausgeführt wird.
  • Die Verbindungszeichenfolge wird in folgendem Format angegeben. (Das Protokoll muss als HTTPS angegeben werden.) Ersetzen Sie MyAccountName durch den Namen Ihres Speicherkontos und MyAccountKey durch den Zugriffsschlüssel:
DefaultEndpointsProtocol=https;AccountName=MyAccountName;AccountKey=MyAccountKey

Wenn Sie Ihre Anwendung mit den Azure-Tools für Microsoft Visual Studio entwickeln, können Sie diesen Wert mithilfe der Eigenschaftenseiten festlegen.

Das exportierte Zertifikat enthält keinen privaten Schlüssel.

Um eine Webrolle unter TLS auszuführen, müssen Sie sicherstellen, dass das exportierte Verwaltungszertifikat den privaten Schlüssel enthält. Wenn Sie zum Exportieren des Zertifikats den Windows-Zertifikat-Manager verwenden, aktivieren Sie für die Option Privaten Schlüssel exportieren unbedingt Ja. Das Zertifikat muss im PFX-Format exportiert werden. Dies ist das einzige derzeit unterstützte Format.

Nächste Schritte

Sehen Sie sich weitere Artikel zur Problembehandlung für Clouddienste an.

Informieren Sie sich in der Blogreihe von Kevin Williamsonüber weitere Szenarien mit zyklischer Ausführung von Rollen.