zoukankan      html  css  js  c++  java
  • c# webapi无法获取Session值问题解决

      在Web项目中,我们想要使用Session时,直接使用以下代码便可以获取想要的内容

     var sessions=HttpContext.Current.Session ;
     var userSession=sessions[key];
    

    但是,我们在WebApi中直接这样使用,sessions的值是null的,也就是无法获取任何session的值,所以我便在此记录如何解决此问题

    step1 :两个类

     
     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);
            }
        }
     

    step2:修改WebApiConfig(在Application_Start方法中增加一下配置)

     //Route上传递Session
                RouteTable.Routes.MapHttpRoute(
                    name: "DefaultApi1",
                    routeTemplate: "api/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional }).RouteHandler = new SessionControllerRouteHandler();
     

    step3:修改Global.asax

     
     public override void Init()
            {
                PostAuthenticateRequest += (s, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
                    base.Init();
            }
     

    以上配置完成后,你的webapi项目即可获取session的内容了,去重新尝试一下吧!

  • 相关阅读:
    Python 安装、循环语句、数据类型(一)
    Python 字符、整型、列表字典等操作(二)
    JAVA实现文章的上一篇下一篇
    什么是公钥、私钥、密码、助记词
    XSS跨站网络攻击
    区块链相关知识
    冷钱包
    .NET 后台提交POST请求
    邮件的发送
    数据库中字段类型对应的C#中的数据类型
  • 原文地址:https://www.cnblogs.com/kekelele/p/15587311.html
Copyright © 2011-2022 走看看