ASP.NET l'API Web de la session ou de quelque chose?
J'ai besoin de stocker des informations dans la session(ou que ce soit dans ASP.NET l'API Web) que j'ai besoin de récupérer dans chaque demande d'API. Nous avons un api site web IIS et de multiples liaison de site web sera ajoutée grâce à en-tête d'hôte. Lors de toute demande, par exemple, api.xyz.com, en-tête d'hôte sera vérifié et magasin de site web d'information dans la session qui sera utilisé dans la suite de l'api de la demande lorsque vous faites un appel à la base de données.
Je sais il n'y a pas de support pour la session en ASP.NET l'API Web. Est-il un autre moyen de gérer ce genre de situation? Où puis-je stocker des informations qui peuvent être récupérer dans chaque demande ultérieure?
grâce.
Vous devez vous connecter pour publier un commentaire.
Eh bien, RESTE, par définition, est apatride. Par l'ajout de session (ou autre chose de ce genre) vous rend dynamique et de vaincre tout le but d'avoir une API RESTful.
L'idée de service RESTful est que chaque ressource est particulièrement adressable en utilisant une syntaxe universelle pour une utilisation dans les hypermédias liens et chaque requête HTTP devraient porter assez d'informations par lui-même pour son destinataire puisse la traiter afin d'être en complète harmonie avec les apatrides de la nature de HTTP".
Donc, tout ce que vous essayez de faire avec l'API Web ici, devrait être ré-architecturé si vous souhaitez avoir une API RESTful.
Avec cela dit, si vous êtes toujours prêt à aller dans cette voie, il y a un hacky façon d'ajouter de la session de l'API Web, et il a été posté par Imran ici http://forums.asp.net/t/1780385.aspx/1
Code (bien que je ne serais pas vraiment recommander):
puis ajouter le HttpControllerHandler à votre API route:
route.RouteHandler = new MyHttpControllerRouteHandler();
est exactement ce que je nécessaire à l'activation de la session de l'intérieur de zones parce que j'avais besoin de remplacer IRouteHandler..Mondiale.asax ajouter
donner un coup de feu 😉
Dans WebApi 2 vous pouvez ajouter ceci à mondiale.asax
Ensuite, vous pouvez accéder à la session par le biais de:
Vous pouvez utiliser des cookies si les données sont assez petites et ne présente pas de problème de sécurité. La même HttpContext.Courant de l'approche fondée sur le travail.
Demande et en-têtes HTTP de réponse peut également être utilisé pour transmettre les informations entre les appels de service.
Maintenant en 2017 avec ASP.Net de Base, vous pouvez le faire, comme expliqué ici.
Microsoft.AspNetCore.Session paquet fournit middleware pour la gestion de l'état de la session.
De démarrage.cs
De la documentation:
Introduction à la session et de l'état de l'application dans ASP.NET de Base
Déjà testé sur un projet de travail,