c#如何在WebAPI使用Session

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

創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)響水,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

在改寫WebApp時(shí)要將以前用泛型處理例程寫的Captcha 改成使用WebApi 來實(shí)作機(jī)制,在實(shí)作的過程中發(fā)現(xiàn)使用IRequiresSessionState session也無法使用(context.Session==null)

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

建立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中默認(rèn)是沒有開啟Session會(huì)話支持的。需要在Global中重寫Init方法來指定會(huì)話需要支持的類型

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

在默認(rèn)情況下是沒有開啟的。SessionStateBehavior有四個(gè)值:

  • Default使用默認(rèn)ASP.NET邏輯來確定請求的會(huì)話狀態(tài)行為。默認(rèn)邏輯是尋找IHttpHandler中是否存在標(biāo)記會(huì)話狀態(tài)接口。

  • Disabled未啟用會(huì)話狀態(tài)來處理請求。 此設(shè)置將覆蓋已通過檢查請求的處理程序確定的任何會(huì)話行為。

  • ReadOnly為請求啟用只讀會(huì)話狀態(tài)。這意味著會(huì)話狀態(tài)無法更新。此設(shè)置將覆蓋已通過檢查請求的處理程序確定的任何會(huì)話狀態(tài)行為。

  • Required為請求啟用完全的讀寫會(huì)話狀態(tài)行為。 此設(shè)置將覆蓋已通過檢查請求的處理程序確定的任何會(huì)話行為。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“c#如何在WebAPI使用Session”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

名稱欄目:c#如何在WebAPI使用Session
網(wǎng)站地址:http://bm7419.com/article24/jdesce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化全網(wǎng)營銷推廣、域名注冊、網(wǎng)站策劃、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)