[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