(水煮ASP。净Web API2方法论](1 - 8)添加会话状态

  

<李>

<李>

,

protected  void  Application_PostAuthorizeRequest ()   {   ,,,HttpContext.Current.SetSessionStateBehavior (SessionStateBehavior.Required);   }

,

,

,

,

继承两个类:

<李>

<李>

我们将创建两个自定义类

<李>

<李>

,

,

public  class  SessionControllerHandler :, HttpControllerHandler, IRequiresSessionState   {   ,,,public  SessionControllerHandler (RouteData  routeData)   ,,,,,,,:,基地(routeData)   ,,,{,}   }   public  class  SessionHttpControllerRouteHandler : HttpControllerRouteHandler   {   ,,,protected  override  IHttpHandler  GetHttpHandler (RequestContext  requestContext)   ,,,{   ,,,,,,,return  new  SessionControllerHandler (requestContext.RouteData);   ,,,}   }

,

,

,

public  static  void  RegisterRoutes (RouteCollection 路线)   {   ,,,routes.IgnoreRoute(“{资源}.axd/{* pathInfo}”);   ,,,//Web  API   ,,,routes.MapHttpRoute (   ,,,的名字:,“DefaultApi”,   ,,,routeTemplate:,“api/{控制器}/{id}”,   ,,,默认值:,new  {=,, id  RouteParameter.Optional }   ,,,).RouteHandler =, new  SessionHttpControllerRouteHandler ();   ,,//MVC   ,,,routes.MapRoute (   ,,,的名字:,“默认”,   ,,,url:,“{控制器}/{行动}/{id}”,   ,,,默认值:,new  {, controller =,“家”,,action =,“指数”,id =, UrlParameter.Optional }   ,,,);   }

,

,

public  static  class  WebApiConfig   {   ,,,public  static  void 注册(HttpConfiguration 配置)   ,,,{   ,,,,,,,var  httpControllerRouteHandler =, typeof (HttpControllerRouteHandler) .GetField (“_instance”,   ,,,,,,,BindingFlags.Static  |, BindingFlags.NonPublic);   ,,,,,,,if  (httpControllerRouteHandler  !=, null)   ,,,,,,,{   ,,,,,,,,,,,httpControllerRouteHandler.SetValue(空,   ,,,,,,,,,,,new  Lazy((),=祝辞,new  SessionHttpControllerRouteHandler (),   ,,,,,,,,,,,真的));   ,,,,,,,}   ,,,,,,,config.Routes.MapHttpRoute (   ,,,,,,,名字:,“DefaultApi”,   ,,,,,,,routeTemplate:,“api/{控制器}/{id}”,   ,,,,,,,默认值:,new  {=,, id  RouteParameter.Optional }   ,,,,,,,);   ,,,,,,,config.MapHttpAttributeRoutes ();   ,,,}   }

,

,

public  class  DiceResult   {   ,,,public  int  NewValue {组,得到,,,}   ,,,public  int  LastValue {组,得到,,,}   }   public  class  DiceController : ApiController   {   ,,,public  DiceResult  ()   ,,,{   ,,,,,,,var  newValue =, new 随机(). next (1,, 7);   ,,,,,,,object 语境;   ,,,,,,,if  (Request.Properties.TryGetValue (“MS_HttpContext”, out 上下文))   ,,,,,,,{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

(水煮ASP。净Web API2方法论](1 - 8)添加会话状态