`

WebAPI启用session功能

 
阅读更多
第一步:简单建立两个类,以备修改WebApi的路由方式

第一个类SessionRouteHandler,继承自HttpControllerHandler,并同时实现一下IRequiresSessionState接口,其实IRequiresSessionState是没有内部方法的,因此也不需要写啥。
 public class SessionRouteHandler : HttpControllerHandler,IRequiresSessionState
 {
         public SessionRouteHandler(RouteData routeData) : base(routeData)
         {
         }
 }


第二个类SessionControllerRouteHandler,继承自HttpControllerRouteHandler
 public class SessionControllerRouteHandler : HttpControllerRouteHandler
 {
         protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
         {
             return new SessionRouteHandler(requestContext.RouteData);
         }
 }


完成这两个类之后,就可以进行下一步了。

第二步:修改WebApiConfig,给新手提示一下,这个类在Global中可以看到,WebApiConfig.Register(......这里在进行的。一般情况下,在App_Start目录下。由于我们是要让WebApi能获得MVC中Controller中设置的Session,故要重改一下这个配置。

//config.Routes.MapHttpRoute(
             //    name: "DefaultApi",
             //    routeTemplate: "api/{controller}/{id}",
             //    defaults: new { id = RouteParameter.Optional }
             //);

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


好了,全部完成后可以编译了,这时候,你可以在Controller中按照正常方式建立Session了,例如:

Session["ValidCode"]="Session Test"
那么WebApi中就可以获取到了:

HttpContext.Current.Session["ValidCode"].ToString()


转自:https://www.cnblogs.com/ca47/p/4603701.html
分享到:
评论

相关推荐

    在WEB API中启用session

    1. 添加引用:首先,你需要在项目中引用`System.Web`命名空间,因为Session功能是.NET Framework Web应用程序的一部分,而非Web API的核心库。 2. 启用Session状态:在Global.asax.cs文件的`Application_Start`方法...

    c#在WebAPI使用Session的方法

    在默认情况下,WebAPI 不支持Session,但是我们可以通过实现 IRequiresSessionState 接口和重写 RouteHandler 来启用 Session。 首先,我们需要创建一个实现 IRequiresSessionState 接口的类,例如: ```csharp ...

    前端知识Cookie, Session,Token和JWT的发展及区别(一) 上章:主要介绍一下背景和Cookie

    浏览器API提供检查Cookie功能,如JavaScript的`document.cookie`。 2.8 Cookie的读写 - 客户端:使用`document.cookie`进行读写操作。 - 服务端:通过HTTP响应头的`Set-Cookie`字段设置Cookie。 下篇文章将介绍...

    实战HTTP Handler (4) -- 与Web程序共享Session 源码

    1. **启用Session**:在HTTP Handler的类定义中,确保已将`IRequiresSessionState`接口添加到实现的接口列表中。这将允许HTTP Handler访问Session状态。 ```csharp public class MyHttpHandler : IHttpHandler, ...

    .net core 6 使用session进行验证

    在.NET Core 6中启用Session,我们需要以下步骤: 1. 添加Session中间件: 在`Startup.cs`文件的`ConfigureServices`方法中,注入`IServiceCollection`,并调用`AddSession`方法来配置Session服务。还需要设置一个...

    java web session跨域共享(redis)

    7. **安全考虑**:使用Redis存储Session数据时,要注意数据的安全性,避免Redis暴露在公网,必要时可启用SSL加密通信,防止Session数据被窃取。 通过以上步骤,可以成功地在多个Web服务器之间共享Session,解决跨域...

    ASP.NET Core-Session

    首先,我们要安装必要的NuGet包来启用Session功能。这两个关键的包是: 1. `Microsoft.AspNetCore.Session`:这个包提供了ASP.NET Core中的Session中间件和相关的API,用于处理会话状态。 2. `Microsoft.Extensions...

    SpringSession+Redis实现Session共享案例

    - `SpringSession` 提供了对原生Servlet API的透明支持,以及与Spring MVC的集成,使得开发者无需修改大量代码就能启用Session共享功能。 2. **Redis**: - Redis 是一个高性能的键值数据库,常用于缓存和消息...

    spring session redis分布式session

    它的核心功能是在多个应用服务器之间共享Session,从而打破了传统Session的单服务器局限性。Spring Session支持多种存储机制,包括内存、数据库、Redis等,这里我们重点讨论Redis方案。 **2. Redis作为Session存储*...

    ssm+redis 实现session共享

    5. **代码调整**:在需要操作Session的地方,不再直接使用`HttpServletRequest.getSession()`,而是通过Spring Session提供的API,如`@SessionAttributes`注解。 **使用Nginx实现负载均衡**:Nginx是一个强大的反向...

    session概念及基本应用

    - 默认情况下,JSP文件支持Session功能。如果需要显式声明支持Session,可以在页面顶部加入 `<%@ page session="true" %>`。 2. **在JSP文件中控制Session**: - 可以在JSP文件中通过EL表达式或JSP脚本的方式访问...

    使用terracotta进行web session 同步

    对于Apache Tomcat这样的Web服务器,需要配置Terracotta的连接器(如tc-server.jar)并启用Terracotta Session管理。在`server.xml`配置文件中,添加`<Manager className="org.terracotta.session.tomcat.Tomcat ...

    spring-session

    此外,Spring Session 还支持在 RESTful API 中使用 JSON Web Tokens (JWT) 进行会话管理。 3. **配置 Spring Session** 配置 Spring Session 需要在 Spring Boot 应用中添加对应的依赖,并在配置文件中指定会话...

    shiro+redis session共享实现

    此外,还需要配置一个SessionManager,设置sessionDAO为我们的RedisSessionDAO,并启用session复制策略。这样,当一个服务器接收到新的session时,它会将其保存到Redis,其他服务器可以从Redis中获取并同步这个...

    session 共享 tomcat-redis-session-manager 所需要的jar (绝对可用)

    Jedis提供了丰富的API,支持连接池、事务处理、发布/订阅等功能,使得在Java应用中操作Redis变得简单。 2. "commons-pool2-2.0.jar":Apache Commons Pool是一个对象池设计模式的实现,主要用于管理和复用昂贵资源...

    在asp.net中使用session常见问题集锦

    在自定义HttpHandler时,如果希望使用Session功能,需要实现`IRequiresSessionState`或`IReadOnlySessionState`接口。这两个接口分别表示需要读写Session状态和只需要读取Session状态。如果没有实现这些接口,系统...

    asp.net中session对象模式剖析

    1. **False(禁用模式)**:完全禁用Session功能。 2. **InProc(进程内模式)**:这是默认的Session模式,它将Session数据存储在当前Web服务器的应用程序域的内存中。 3. **StateServer(状态服务器模式)**:在...

    整合SRPING 基于REDIS共享SESSION

    4. **启用Session共享** 在Web应用程序的入口类或`web.xml`中,添加过滤器以启用Spring Session: ```java @WebFilter(filterName = "springSessionRepositoryFilter", urlPatterns = "/*") public class ...

    tomcat-session同步所需jar.rar_session集群共享_tomcat session

    配置文件如`server.xml`和`context.xml`也需要相应调整,以启用session复制和设置合适的session超时、复制策略等。 总的来说,理解并配置好Tomcat的session集群共享对于构建高可用、高并发的Java Web应用至关重要。...

    memcached+tomcat7共享session所需要的jar包

    3. **配置Tomcat**:在Tomcat的`conf/catalina.properties`文件中,添加以下配置,启用基于Memcached的Session管理器: ``` session.manager=org.apache.catalina.session.PersistentManager session.manager....

Global site tag (gtag.js) - Google Analytics