webapi中使用session
2016-12-05 00:24
253 查看
webapi中使用session 修改global.cs里面的内容 using System; using System.Web; using System.Web.Routing; using System.Web.Http; using System.Web.Http.WebHost; using System.Web.SessionState; namespace ApiControllerExample { public class Global : System.Web.HttpApplication { public override void Init() { //取下注释下面这行语句,将使得全部Api都可以访问Session //this.PostAuthenticateRequest += (s, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); base.Init(); } protected void Application_Start(object sender, EventArgs e) { RouteConfig.RegisterRoutes(RouteTable.Routes); // 注册路由 } } public class SessionableControllerHandler : HttpControllerHandler, IRequiresSessionState { public SessionableControllerHandler(RouteData routeData) : base(routeData) { } } public class SessionStateRouteHandler : IRouteHandler { IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext) { return new SessionableControllerHandler(requestContext.RouteData); } } public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.MapHttpRoute( name: "WebApiRoute1", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ).RouteHandler = new SessionStateRouteHandler(); // 使用Session routes.MapHttpRoute( name: "WebApiRoute2", routeTemplate: "api/{controller}/{id}/{id2}", defaults: new{id = RouteParameter.Optional } ); // 不使用Session } } } webapi用例: using System; using System.Web.Http; namespace ApiControllerExample { public class StateController : ApiController { public string Get(int id) { try { return GetStateInfo(id); } catch (Exception err) { return "excep: " + err.Message; } } private string GetStateInfo(int id) { System.Web.HttpContext context = System.Web.HttpContext.Current; if (id == 1) { return context.Session["state"].ToString(); } else if (id == 2) { return context.Cache["state"].ToString(); } else { return context.Application["state"].ToString(); } } //这个方法无法使用Session public string Get(int id, int id2) { System.Web.HttpContext context = System.Web.HttpContext.Current; try { return context.Session["state"].ToString(); } catch (Exception err) { return "excep: " + err.Message; } } } }
相关文章推荐
- webapi使用session
- webapi跨域使用session的方法示例
- 在WebAPI使用Session
- c#在WebAPI使用Session的方法
- 在Asp.net WebAPI使用Session
- 使用flex 的session
- ASP.NET Session 使用报告(转贴)
- 通知php使用自定义的session处理函数来操作session,而不使用php预置的方法
- OLEDB Resource(Session) Pooling (在Ado开发中使用连接池)
- 在HttpHandlers (ASHX files)中使用Session
- servlet学习笔记(3)-使用Java Servlet API 进行会话管理(对session的操作)
- 抛开cookie使用session-PHP中SESSION不能跨页传递问题的解决办法
- Session的使用方法
- 使用xmlhttp和Java session监听
- WebPart中使用Session
- 使用sqlserver来存放和取得session
- 使用xmlhttp和Java session监听改善站内消息
- 使用session在jsp页面之间传递多维数组
- 使用sqlserver来存放和取得session
- 有的网站的相关内容必须要在登录后才可以查看,其登录信息保存在session变量之中。这样,使用asphttp等组件就难以正确得到所要的信息。