[MVC 4] Activar Session en WebAPI
La WebAPI de ASP NET trae por defecto la sesión desactivada, debido a que es considerado una mala práctica para este tipo de proyectos.
Para habilitarla, hay que hacer lo siguiente:
Ya con eso la sesión se encontrará habilitada.
Aquí dejo también el código de WebApiConfig por si no quedó claro:
Bueno, eso fue todo.
Saludos!
Para habilitarla, hay que hacer lo siguiente:
- Agregar las clases MyHttpControllerHandler y MyHttpControllerRouteHandler.
- Agregar el using "using System.Web.Routing;"
- Dentro de WebApiConfig reemplazar: "config.Routes.MapHttpRoute" por "var route = config.Routes.MapHttpRoute".
- Luego al final agregamos "route.RouteHandler = new MyHttpControllerRouteHandler();".
A continuación el código de las clases:
using System.Web; using System.Web.Http.WebHost; using System.Web.Routing; using System.Web.SessionState; namespace MyProject { public class MyHttpControllerHandler : HttpControllerHandler, IRequiresSessionState { public MyHttpControllerHandler(RouteData routeData) : base(routeData) { } } public class MyHttpControllerRouteHandler : HttpControllerRouteHandler { protected override IHttpHandler GetHttpHandler(RequestContext requestContext) { return new MyHttpControllerHandler(requestContext.RouteData); } } }
Ya con eso la sesión se encontrará habilitada.
Aquí dejo también el código de WebApiConfig por si no quedó claro:
using System.Web; using System.Linq; using System.Web.Http; using System.Web.Routing; using Bencsharp.Mvc.App_Start; public static class WebApiConfig { public static void Register(HttpConfiguration config) { var route = RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); route.RouteHandler = new MyHttpControllerRouteHandler(); config.EnableQuerySupport(); } }
Bueno, eso fue todo.
Saludos!
Comentarios
Publicar un comentario