国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

c#在WebAPI使用Session的方法

2020-01-24 00:17:00
字體:
來源:轉載
供稿:網友

最近在改寫WebApp時要將以前用泛型處理例程寫的Captcha 改成使用WebApi 來實作機制,在實作的過程中發現使用IRequiresSessionState session也無法使用(context.Session==null)

查過一些文章才發現需要在注冊api路由需將RouteHandler 改寫,才能使用。以下用ASP.net MVC 4來說明要實作的部分

建立HttpControllerHandler和HttpControllerRouteHandler 并覆寫它

  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);    }  }

在WebApiConfig中將config.Routes.MapHttpRoute 改成

RouteTable.Routes.MapHttpRoute(using System.Web.Routing)并指定RouteHandler

public static void Register(HttpConfiguration config){  RouteTable.Routes.MapHttpRoute(  name: "DefaultApi",  routeTemplate: "api/{controller}/{id}",  defaults: new { id = RouteParameter.Optional }  ).RouteHandler=new SessionControllerRouteHandler();}

或者 在MVC的WebApi中默認是沒有開啟Session會話支持的。需要在Global中重寫Init方法來指定會話需要支持的類型

public override void Init()    {      PostAuthenticateRequest += MvcApplication_PostAuthenticateRequest;      base.Init();    }    void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)    {      HttpContext.Current.SetSessionStateBehavior(        SessionStateBehavior.Required);    }

或者:

    public override void Init()    {      this.PostAuthenticateRequest += (sender, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);      base.Init();    }

在默認情況下是沒有開啟的。SessionStateBehavior有四個值:

  • Default使用默認ASP.NET邏輯來確定請求的會話狀態行為。默認邏輯是尋找IHttpHandler中是否存在標記會話狀態接口。
  • Disabled未啟用會話狀態來處理請求。 此設置將覆蓋已通過檢查請求的處理程序確定的任何會話行為。
  • ReadOnly為請求啟用只讀會話狀態。這意味著會話狀態無法更新。此設置將覆蓋已通過檢查請求的處理程序確定的任何會話狀態行為。
  • Required為請求啟用完全的讀寫會話狀態行為。 此設置將覆蓋已通過檢查請求的處理程序確定的任何會話行為。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东光县| 永泰县| 河北省| 三明市| 大石桥市| 屏东县| 崇仁县| 马山县| 瓮安县| 墨脱县| 油尖旺区| 罗源县| 大荔县| 平阴县| 邓州市| 涡阳县| 勃利县| 灵宝市| 苏尼特右旗| 南华县| 和顺县| 安远县| 隆林| 岢岚县| 南开区| 乌拉特后旗| 淅川县| 庐江县| 都昌县| 五河县| 成安县| 灵武市| 望奎县| 曲松县| 杨浦区| 泰和县| 久治县| 克拉玛依市| 扬中市| 青铜峡市| 南皮县|