ASP.NET-Web-API-Sitzung oder etwas?
Brauche ich, um zu speichern einige Informationen, die in der Sitzung(oder in was auch immer in ASP.NET Web-API), die ich abrufen müssen in jeder API-Anfrage. Wir haben eine api-IIS-Website und mehreren web-site verbindlich Hinzugefügt werden, die durch die host-header. Bei jeder Anfrage kommt zum Beispiel api.xyz.com host-header werden geprüft und Shop, website-Informationen in der Sitzung, die verwendet werden, in jeder nachfolgenden api-Anfrage, wenn Sie einen Anruf tätigen zu Datenbank.
Ich weiß, es gibt keine Unterstützung für session-in ASP.NET Web-API. Gibt es irgendeine andere Art und Weise zu behandeln diese Art von situation? Wo kann ich Informationen speichern, können abgerufen werden bei jeder nachfolgenden Anfrage?
Dank.
InformationsquelleAutor der Frage user1186065 | 2012-07-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, der REST vom design ist staatenlos. Durch hinzufügen der session (oder irgendetwas anderes in der Art), Sie machen es stateful und besiegen jeden Zweck, eine RESTful API.
Die ganze Idee von RESTful-service ist, dass jede Ressource ist eindeutig adressierbar über eine Universelle syntax für die Verwendung in hypermedia-links und jede HTTP-Anforderung sollte genügend Informationen, indem Sie sich selbst zum Empfänger zu verarbeiten, es in völliger Harmonie mit die zustandslose Natur des HTTP -".
Also, was auch immer Sie versuchen zu tun, mit der Web-API hier sollte wahrscheinlich wieder architectured wenn Sie möchten, eine RESTful API.
Mit sagte, dass, wenn Sie immer noch bereit sind, zu gehen, dass die route, es ist ein hacky Zugabe von session zu Web-API, und es wurde geschrieben von Imran hier http://forums.asp.net/t/1780385.aspx/1
Code (obwohl ich würde nicht wirklich empfehlen):
und fügen Sie dann die HttpControllerHandler, um Ihre API-route:
InformationsquelleAutor der Antwort Filip W
in Global.asax hinzufügen
give it a shot 😉
InformationsquelleAutor der Antwort Soren
In WebApi 2 können Sie dieses global.asax
Dann können Sie Zugriff auf die session durch:
InformationsquelleAutor der Antwort Dalorzo
Können Sie cookies verwenden, wenn die Daten klein genug ist und nicht die Sicherheit betreffen. Das gleiche HttpContext.Aktuelle basierten Ansatz sollte funktionieren.
Anfrage-und Antwort-HTTP-Header kann auch verwendet werden, um Informationen zwischen den service-aufrufen.
InformationsquelleAutor der Antwort Dmitry S.
Nun im Jahr 2017 mit ASP.Net Core-Sie können es tun, wie hier beschrieben.
Microsoft.AspNetCore.Sitzung-Paket bietet eine middleware für die Verwaltung des Sitzungsstatus.
Start.cs
Aus den Docs:
Einführung in session-und application-Zustand in ASP.NET Kern
Schon getestet auf einem Arbeitsprojekt
InformationsquelleAutor der Antwort Crying Freeman