中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c#如何在WebAPI使用Session

發布時間:2021-08-09 14:27:33 來源:億速云 閱讀:154 作者:小新 欄目:編程語言

這篇文章主要介紹了c#如何在WebAPI使用Session,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在改寫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為請求啟用完全的讀寫會話狀態行為。 此設置將覆蓋已通過檢查請求的處理程序確定的任何會話行為。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“c#如何在WebAPI使用Session”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会昌县| 皋兰县| 保德县| 东安县| 油尖旺区| 赤峰市| 海晏县| 荣昌县| 丰镇市| 章丘市| 江永县| 察雅县| 长垣县| 汕尾市| 青海省| 和静县| 延川县| 尖扎县| 丰都县| 揭阳市| 十堰市| 崇仁县| 阿城市| 徐水县| 大厂| 金川县| 周宁县| 沈阳市| 阿坝| 秭归县| 榆树市| 美姑县| 林西县| 峨眉山市| 永吉县| 潞西市| 徐水县| 兴文县| 东乡| 永泰县| 谷城县|