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,也会出现访问不到的错误。

上一篇下一篇

猜你喜欢

热点阅读