亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

阿坝县| 太保市| 玛沁县| 龙江县| 龙井市| 定陶县| 焉耆| 磐石市| 文水县| 神木县| 博白县| 齐齐哈尔市| 宁阳县| 梁河县| 民和| 九龙县| 迁西县| 河南省| 大埔区| 温州市| 博兴县| 恩施市| 海林市| 临朐县| 天峨县| 伊川县| 龙陵县| 通江县| 秭归县| 绵竹市| 凤山县| 奉贤区| 虎林市| 东乌珠穆沁旗| 长岭县| 承德市| 克山县| 从江县| 康平县| 获嘉县| 衡水市|