Asp.Net Web Api Session支持
2021-09-17 本文已影响0人
寻找无名的特质
Asp.Net Web Api项目创建完成后,如果在Web Api中访问Session会出现错误,这是因为缺省情况下,没有安装针对Session的支持,Session在Web Api调用时没有初始化。这需要启动设置中进行设置,代码如下:
using System.Net.Http.Headers;
using System.Web;
using System.Web.Http;
using System.Web.Http.WebHost;
using System.Web.Routing;
using System.Web.SessionState;
namespace Plat.Web.Deply
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API 配置和服务
// Web API 路由
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
).RouteHandler = new SessionControllerRouteHandler(); ;
}
public class SessionRouteHandler : HttpControllerHandler, IRequiresSessionState
{
public SessionRouteHandler(RouteData routeData)
: base(routeData)
{
}
}
public class SessionControllerRouteHandler : HttpControllerRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new SessionRouteHandler(requestContext.RouteData);
}
}
}
}
MVC项目也会有同样的问题,也需要进行类似的处理。另外,如果从页面使用Ajax调用Web Api,这种情况可能产生与前端不同的会话,这种情况下,如果将权限信息保存在Session,也会出现访问不到的错误。