博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.Net Web API中使用Session,Cache和Application的几个方法
阅读量:5941 次
发布时间:2019-06-19

本文共 1796 字,大约阅读时间需要 5 分钟。

    在ASP.NET中,Web Api的控制器类派生于ApiController,该类与ASP.NET的Control类没有直接关系,因此不能像在Web MVC中直接使用HttpContext,Cache,Session等,要使用的话,一般是从System.Web.HttpContext.Current静态对象引用HttpContext,从而使用Session等状态数据。

    不过,要在控制器类中通过HttpContext的Session属性直接使用Session状态数据,将抛出nullreference异常,网查主要有两种解决方案,一个是重载Global的init()方法,在该方法中开放Session状态,另一个设计带Session的路由处理器

    重载Global的Init()

public class WebApiApplication : System.Web.HttpApplication{        public override void Init()        {            this.PostAuthorizeRequest += (y, z) => HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);            base.Init();        }        protected void Application_Start()        {            GlobalConfiguration.Configure(WebApiConfig.Register);        }}

设计路由处理器

  建立HttpControllerHandler和HttpControllerRouteHandler并覆写

public class SessionStateRouteHandler : IRouteHandler  {        public IHttpHandler GetHttpHandler(RequestContext requestContext)        {            return new SessionableControllerHandler(requestContext.RouteData);        } } public class SessionableControllerHandler:HttpControllerHandler,IRequiresSessionState {        public SessionableControllerHandler(RouteData routeData)            :base(routeData)        {        } }

   创建RouteConfig类型并配置路由

public class RouteConfig    {        public static void RegisterRoutes(RouteCollection route)        {            route.MapHttpRoute(              name: "WebApiRoute1",              routeTemplate: "api/{controller}/{id}",              defaults: new { id = RouteParameter.Optional }            ).RouteHandler = new SessionStateRouteHandler();        }    }

 在Global中注册配置

protected void Application_Start(){            // GlobalConfiguration.Configure(WebApiConfig.Register);            RouteConfig.RegisterRoutes(RouteTable.Routes);}

 

转载地址:http://itqtx.baihongyu.com/

你可能感兴趣的文章
React 组件通信之 React context
查看>>
ZooKeeper 可视化监控 zkui
查看>>
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
密码概述
查看>>
autoconf,automake,libtool
查看>>
jQuery的技巧01
查看>>
基于泛型实现的ibatis通用分页查询
查看>>
gopacket 使用
查看>>
AlertDialog对话框
查看>>
我的友情链接
查看>>
linux安全---cacti+ntop监控
查看>>
鸟哥的linux私房菜-shell简单学习-1
查看>>
nagios配置监控的一些思路和工作流程
查看>>
通讯组基本管理任务三
查看>>
赫夫曼编码实现
查看>>
html页面显示div源代码
查看>>
基础复习-算法设计基础 | 复杂度计算
查看>>
debian、ubuntu系统下,常用的下载工具
查看>>