Kann OWIN-middleware verwenden Sie die http-Sitzung?
Hatte ich ein wenig code, dass ich für duplizieren ASP.NET und SignalR und ich beschlossen, Sie neu zu schreiben, als OWIN-middleware zu entfernen diese Vervielfältigung.
Sobald ich es bemerkte ich, dass HttpContext.Current.Session
war null, und ich sehe keine session-Objekt auf der IOwinContext
dass mein middleware hat.
Ist es möglich, den Zugriff auf die http-Sitzung von OWIN?
InformationsquelleAutor der Frage user2719430 | 2014-05-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, aber es ist sehr wohl ein hack. Es werden auch nicht mit SignalR, weil SignalR MUSS ausgeführt werden, bevor die Sitzung erworben wird, um zu verhindern, dass lange session sperren.
Tun, diese zu aktivieren-session für jede Anfrage:
Dann können Sie den Zugriff auf die session mit entweder
HttpContext.Current.Session
oderInformationsquelleAutor der Antwort Tratcher
Diese Antwort ist ein remix von die erste Antwortso die Kernaussage sollte sein zugeschrieben @Tratcher. Es ist anders genug, obwohl die post es getrennt statt, was eine Bearbeiten.
Angenommen, Sie wollen eine kleine OWIN-app für grundlegende Tests Zwecke (z.B. als stub/fake für eine größere API zu tun, integration-tests), einschließlich einer leicht hakish Art und Weise der Verwendung des Sitzungsstatus funktionieren würde just fine.
First up, müssen Sie diese:
Mit denen Sie können erstellen eine helper-Methode:
Könnte man auch erstellen, das als Erweiterung Methode wie die ursprüngliche Antwort hat.
Beachten Sie, dass wenn Sie nicht die
UseStageMarker
würden Sie auf diesen Fehler stoßen:In jedem Fall mit den oben genannten können Sie jetzt mit HttpContext in Ihrem OWIN app wie diese:
Wenn Sie Feuer IIS Express mit diesem kleinen app, auf die Sie zuerst erhalten:
Dann, wenn Sie gehen, um
http://localhost:12345/write
erhalten Sie:Dann, wenn Sie zurück /gehen Sie zu einem anderen url auf, die als host erhalten Sie:
Oder etwas ähnliches.
InformationsquelleAutor der Antwort Jeroen