1

Ich versuche, meine Webanwendung von VS ohne Ausfallzeit zu veröffentlichen. Wenn Sie in Google suchen, finden Sie in der offiziellen Dokumentation, dass Sie Slots verwenden und später einen Tausch durchführen.Bereitstellen von WebApp für Azure ohne Ausfallzeit von VS2015

Dies ist ein guter Ansatz, aber ich habe ein anderes Problem, wenn ich den Tausch mache, Logins sind verloren (siehe diese Frage: link).

Relevante Informationen in dem Link:

Session nicht zu Authentifizierung verbunden ist, sind versuchen Sie es in der falschen Art und Weise zu lösen.

Alle Authentifizierungstickets und Cookies für Formulare werden mit der Datensicherungsschicht verschlüsselt und signiert. Das Problem, auf das Sie stoßen, liegt daran, dass die Verschlüsselungsschlüssel nicht gespeichert werden und Anwendungen voneinander isoliert sind.

Wie kann ich das tun? In AWS hatte ich Roll Updates ...

Weitere Informationen Ich bin mit ASP.NET-Core Identity 3.0

Dank !!

Antwort

2

Was Sie gerade sehen, ist eine azurblaue Einschränkung. Während sich Azure-Websites den Schlüsselring teilen, werden Swap-Slots als separate Anwendungen angesehen.

Es gibt ein paar Dinge zu versuchen.

Geben Sie zuerst einen allgemeinen Anwendungsnamen ein. Dies wird hilfreich sein, da jede Anwendung, die den Schlüsselring gemeinsam nutzt, standardmäßig isoliert ist. aber wenn sie den Namen der Anwendung teilen können sie Schlüssel teilen

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddDataProtection(); 
    services.ConfigureDataProtection(configure => 
    { 
     configure.SetApplicationName("my application"); 
    }); 
} 

Wenn die für azur nicht genug ist (ich bin ehrlich nicht sicher, ob die heiße Tauschen Azure Web App der Shared-Key-Ordner mit am Ende), dass bei der Verwendung von Azure Daten kombinieren Tabellen zum Speichern der Verschlüsselungsschlüssel - https://github.com/GrabYourPitchforks/DataProtection.Azure/tree/dev

Zwischen diesen beiden sollte es die Verschlüsselungsschlüssel erhalten, die zum Schutz der Identitäts-Cookies zwischen Ihren Apps verwendet werden.

+0

Ich habe die Einstellung Anwendungsname zuvor ohne Ergebnisse getestet ..., Ich habe Bern mit Microsoft Spanien gesprochen, um mein Problem zu sagen ... Wir sind von AWS nach Azure mit Bizspark Plan migrieren ... Danke für Ihre Zeit und Antwort, ich wird die andere Option testen ... – chemitaxis

+1

Ich habe einige Leute im Web-Apps-Team gemailt, um zu sehen, ob der Schlüsselring geteilt wird oder nicht – blowdart

+0

Hallo @blowdart Ich habe es getestet und funktioniert wie ein Charme. Danke noch einmal!! – chemitaxis

-1

Verwenden Sie den speicherinternen Sitzungsstatus?

Das Problem, dass "Logins" verloren gehen, ist ein Architekturproblem, kein Problem bei der Aktualisierung Ihrer Web-App.

Verwenden Sie etwas wie RedisCache für Sitzungsstatus. Es wird nicht nur bei der Aktualisierung Ihrer Anwendung bestehen bleiben, sondern auch bei der Lastverteilung auf mehreren Serverinstanzen. Wie es aussieht, haben Sie wahrscheinlich dieses Problem, wenn Sie auf mehr als einen Server skalieren, zusätzlich zu dem, wenn Sie Ihre App aktualisieren.

+0

Hallo, Logins mit Identität 3.0 nicht Sitzung verwenden ... Lesen Sie den Link in meiner Frage bitte beigefügt. Vielen Dank!! – chemitaxis

+1

Wenn es wichtige Informationen in einem anderen Beitrag gibt, sollten Sie es in Ihren Beitrag aufnehmen. Ich werde nicht externe Links durch Erklärung von "schaue auf diese Frage" –

+0

Sorry LeRoy, habe ich hinzugefügt, dass ich mit Identity 3.0 ... Ich werde mehr Informationen hinzufügen, aber das ist nicht das typische Problem, das Sitzung nicht speichert in DB oder was auch immer, verwende ich nicht Sitzung in meiner ganzen Anwendung. – chemitaxis