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.
Ziele
- 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.
Verwenden Sie den Preisrechner.
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.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Google Cloud-Konto haben, erstellen Sie ein Konto, um die Leistung unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Mit den folgenden Schritten können Sie eine Firestore-Datenbank im nativen Modus erstellen:
-
Rufen Sie in der Google Cloud Console die Seite Firestore auf.
Zur Firestore-Seite - Klicken Sie im Bildschirm Firestore-Modus auswählen auf Nativen Modus auswählen.
- Wählen Sie einen Standort für Ihre Firestore Datenbank aus. Mit dieser Standorteinstellung legen Sie den Standardspeicherort für Ressourcen in Ihrem Google Cloud Projekt fest. Google Cloud Er wird für Google Cloud Dienste in Ihrem Google Cloud Projekt verwendet, die eine Standorteinstellung 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 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 Fortfahren, um den Beispielcode herunterzuladen und in das 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_IDdurch die Google Cloud Projekt-ID, die Sie erstellt haben mit der Google Cloud Console.Die Google Cloud CLI ist die primäre Methode zum Interagieren mit Ihren Google Cloud Ressourcen über die Befehlszeile. In dieser Anleitung verwenden Sie die gcloud CLI zum Bereitstellen und Überwachen der Anwendung.
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 sich die Startup.csDatei anzusehen.
Projekt einrichten Google Cloud
-
Bearbeiten Sie im Cloud Shell-Editor die Datei
appsettings.jsonund ersetzen Sie die beiden Instanzen vonYOUR-PROJECT-IDdurch 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 Schlüsselbund für den Cloud Key Management Service 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:
gcloud storage buckets create 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 ReleaseVerwenden Sie Cloud Build, um einen Docker-Container zu erstellen und in der Container Registry zu 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 automatische Löschstrategie 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 zum Anzeigen von Protokollen finden Sie im Cloud Run-Handbuch.
Bereinigen
Projekt löschen
- Wechseln Sie in der Google Cloud -Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.