Viele Anwendungen benötigen eine Sitzungsverwaltung zur Authentifizierung und für Nutzereinstellungen. ASP.NET Core wird mit Middleware geliefert, um Sitzungen in einem verteilten Cache zu speichern.
Der standardmäßig verteilte Cache von ASP.NET wird überhaupt nicht verteilt. Sitzungsdaten werden im Arbeitsspeicher des Webservers gespeichert. Wenn nur ein Webserver eine Website bereitstellt, ist diese Strategie in Ordnung. Wenn jedoch viele Webserver eine Website bedienen, können die Nutzer der Website Fehler und verlorene Daten erhalten.
Um Fehler und Datenverlust zu vermeiden, muss eine ASP.NET-Anwendung einen verteilten Cache verwenden, in dem Daten in einem persistenten Datenspeicher gespeichert werden. In dieser Anleitung erfahren Sie, wie Sie Sitzungen in Cloud Run verwalten, indem Sie sie in Firestore speichern und Cookies mit dem Cloud Key Management Service verschlüsseln.
Lernziele
- Stellen Sie die Anwendung in Cloud Run bereit.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
-
Mit den folgenden Schritten können Sie eine Firebase-Datenbank im nativen Modus erstellen:
-
Rufen Sie in der Google Cloud Console die Seite Firestore-Betrachter auf.
Zur Firestore-Seite - Klicken Sie im Bildschirm Firestore-Modus auswählen auf Nativen Modus auswähen.
- Wählen Sie einen Standort für Ihre Firestore-Datenbank aus. Die Speicherorteinstellung ist der standardmäßige Speicherort für Google Cloud-Ressourcen in Ihrem Google Cloud-Projekt. Dieser Speicherort wird für Google Cloud-Dienste in Ihrem Google Cloud-Projekt verwendet, die eine Speicherorteinstellung benötigen. Dabei geht es speziell um Ihren standardmäßigen Cloud Storage-Bucket und Ihre App Engine-Anwendung.
- Klicken Sie auf Datenbank erstellen.
-
Rufen Sie in der Google Cloud Console die Seite Firestore-Betrachter auf.
-
Öffnen Sie den Quellcode der Anwendung in Cloud Shell.
Zu Cloud ShellCloud Shell bietet Ihnen direkt über den Browser Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
- Klicken Sie auf Weiter, um den Beispielcode herunterzuladen und ins Anwendungsverzeichnis zu wechseln.
-
Konfigurieren Sie in Cloud Shell die gcloud CLI für die Verwendung Ihres neuen Google Cloud-Projekts:
# Configure gcloud for your project gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch die Google Cloud-Projekt-ID, die Sie mit der Google Cloud Console erstellt haben.Die Google Cloud CLI ist die primäre Methode zur Interaktion mit Ihren Google Cloud-Ressourcen über die Befehlszeile. In dieser Anleitung verwenden Sie die gcloud CLI, um Ihre Anwendung bereitzustellen und zu überwachen.
Quellcode untersuchen
Das folgende Diagramm zeigt, wie Firestore Sitzungen für die Cloud Run-Anwendung verarbeitet.
Mit der Methode ConfigureServices
in der Datei Startup.cs
wird die Anwendung so eingerichtet, dass Cloud KMS für die Verschlüsselung und Cloud Storage zum Speichern verschlüsselter Schlüssel verwendet werden.
-
Klicken Sie in Cloud Shell auf , um den Editor zu starten und die Datei
Startup.cs
zu prüfen.
Google Cloud-Projekt einrichten
-
Bearbeiten Sie im Cloud Shell-Editor die Datei
appsettings.json
und ersetzen Sie die beiden Instanzen vonYOUR-PROJECT-ID
durch Ihre Google Cloud-Projekt-ID. Speichern Sie die Datei. -
Erstellen Sie einen neuen Schlüsselbund für den Cloud Key Management Service mit dem Namen
dataprotectionprovider
:gcloud kms keyrings create dataprotectionprovider --location global
-
Erstellen Sie einen neuen Cloud Key Management Service-Schlüssel mit dem Namen
masterkey
:gcloud kms keys create masterkey --location global --keyring dataprotectionprovider --purpose=encryption
-
Erstellen Sie einen Cloud Storage-Bucket zum Speichern der verschlüsselten Schlüssel:
gsutil mb gs://PROJECT_ID-bucket
In Cloud Run bereitstellen und ausführen
Mit Cloud Run können Sie eine Anwendung erstellen und bereitstellen, die unter hoher Last und mit großen Datenmengen zuverlässig ausgeführt wird.
In dieser Anleitung wird der Server mithilfe von Cloud Run bereitgestellt.
Veröffentlichen Sie in Ihrer Cloud Shell Ihre Anwendung:
dotnet publish -c Release
Mit Cloud Build einen Docker-Container erstellen und in Container Registry veröffentlichen:
gcloud builds submit --tag gcr.io/PROJECT_ID/sessions bin/Release/netcoreapp2.1/publish
Führen Sie den Container mit Cloud Run aus:
gcloud beta run deploy sessions --region us-central1 --platform managed --image gcr.io/PROJECT_ID/sessions --allow-unauthenticated
Notieren Sie sich die URL aus der Ausgabe:
Service [sessions] revision [sessions-00003-xiz] has been deployed and is serving 100 percent of traffic at https://sessions-r3f3em7nuq-uc.a.run.app
Um die Live-Anwendung anzuzeigen, rufen Sie die URL auf, die Sie aus dem vorherigen Schritt kopiert haben.
Sitzungen löschen
Sie können Sitzungsdaten in der Google Cloud Console löschen oder eine Strategie zum automatischen Löschen implementieren. Wenn Sie zum Speichern von Sitzungen Lösungen wie Memcache oder Redis verwenden, werden abgelaufene Sitzungen automatisch gelöscht.
Fehler in der Anwendung beheben
Wenn Sie keine Verbindung zu Ihrer Cloud Run-Anwendung herstellen können, prüfen Sie Folgendes:
- Überprüfen Sie, ob die
gcloud
-Bereitstellungsbefehle erfolgreich ausgeführt wurden und keine Fehler ausgegeben haben. Wenn Fehler aufgetreten sind (z.–B.message=Build failed
), beheben Sie diese und versuchen Sie noch einmal, die Cloud Run-Anwendung bereitzustellen. - Weitere Informationen finden Sie in der Cloud Run-Anleitung zum Aufrufen von Logs.
Bereinigen
Projekt löschen
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.