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的内容了,去重新尝试一下吧!

  • 相关阅读:
    golang获取变量数据类型
    有道云笔记隐藏广告
    golang搭建web服务器
    node.js搭建https服务器
    Linux查看CPU和内存信息
    go语言中文处理
    node.js压缩和解压缩
    关于同步、异步、阻塞、非阻塞简单总结
    Nginx部署静态网站
    node.js分片上传文件
  • 原文地址:https://www.cnblogs.com/kekelele/p/15587311.html
Copyright © 2011-2022 走看看