webentwicklung-frage-antwort-db.com.de

Sitzungs-Cookie wird niemals im asp.net-Kern gesetzt

Ich versuche, Sitzungen für eine asp.net core 2.0-Website zu konfigurieren, aber das Sitzungscookie wird niemals gesetzt.

Ich rufe ..

app.UseSession();

... in Startup.Configure und ...

        services.AddDistributedMemoryCache();

        services.AddSession(options =>
        {
            options.IdleTimeout = TimeSpan.FromMinutes(10);
            options.Cookie.HttpOnly = false;
            options.Cookie.Name = "WS_AUTH_ID";
        });

... in der ConfigureServices-Methode.

Im Controller kann ich auf ...

HttpContext.Session.Id;

... aber die ID ist bei jeder Anfrage anders.

Vermisse ich etwas?

Update: Ich sollte darauf achten, dass ich Cookies "manuell" setzen kann und der Browser sie "empfängt".

HttpContext.Response.Cookies.Append("Test_cookie", "yo");
5
Preli

Das war der Grund für mich:

Die Erstellung des Sitzungscookies wurde durch die Erweiterung Microsoft.AspNetCore.CookiePolicy (UseCookiePolicy) blockiert. Das Entfernen dieser Erweiterung und das Ausführen der App in einem neuen Browserfenster haben das Problem behoben.

Eine andere Problemumgehung könnte darin bestehen, die Anwendung ohne Sitzung arbeiten zu lassen, bis der Benutzer Cookies akzeptiert (diese Problemumgehung habe ich nicht getestet).

Hoffentlich hilft das.

8
Mark

Für mich wurde das Problem durch einen der Kommentare zu der Frage gelöst:

Der Cookie wird nur geschrieben, wenn Sie der Sitzung etwas hinzufügen.

Also fordern Sie einfach die Session.Id hilft nicht, man muss eigentlich was einstellen.

In meinem Fall war es eine Variable, die erst nach einer bestimmten Bedingung festgelegt wurde. Bevor diese Bedingung erfüllt wurde, wurde immer wieder eine neue Sitzungs-ID erstellt.

1
Jham

Wenn Sie die Cookie-Richtlinie aktiviert haben, wird das Sitzungs-Cookie erst erstellt, wenn der Benutzer die Verwendung von Cookies akzeptiert. Dies entspricht den EU-Datenschutzbestimmungen.

Sie können die Zeile app.UseCookiePolicy(); aus Ihrer Startup entfernen und dann funktioniert es. Andernfalls müssen Ihre Benutzer der Verwendung von Cookies zustimmen, bevor Sie das Cookie zur Sitzungssteuerung verwenden können.

1
Rui Lima

Sie müssen Folgendes in Ihre ConfigureServices-Methode eingeben:

services.AddMvc()
    .AddSessionStateTempDataProvider();

services.AddDistributedMemoryCache();
services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30);
    options.Cookie.Name = ".MyApplication";
}); 

Geben Sie in Ihrer Konfiguration Folgendes ein

//enable session before MVC
app.UseSession();
app.UseMvc();
0
pitaridis