[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