欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#在WebAPI使用Session的方法

 更新時間:2018年07月05日 10:09:41   作者:天涯過者  
這篇文章主要介紹了c#在WebAPI使用Session的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

查過一些文章才發(fā)現(xiàn)需要在注冊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邏輯來確定請求的會話狀態(tài)行為。默認邏輯是尋找IHttpHandler中是否存在標記會話狀態(tài)接口。
  • Disabled未啟用會話狀態(tài)來處理請求。 此設置將覆蓋已通過檢查請求的處理程序確定的任何會話行為。
  • ReadOnly為請求啟用只讀會話狀態(tài)。這意味著會話狀態(tài)無法更新。此設置將覆蓋已通過檢查請求的處理程序確定的任何會話狀態(tài)行為。
  • Required為請求啟用完全的讀寫會話狀態(tài)行為。 此設置將覆蓋已通過檢查請求的處理程序確定的任何會話行為。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • unity實現(xiàn)繪畫功能

    unity實現(xiàn)繪畫功能

    這篇文章主要為大家詳細介紹了unity實現(xiàn)繪畫功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C#如何通過probing指定dll尋找文件夾詳解

    C#如何通過probing指定dll尋找文件夾詳解

    這篇文章主要給大家介紹了關于C#如何通過probing指定dll尋找文件夾的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • 基于WPF實現(xiàn)瀑布流控件

    基于WPF實現(xiàn)瀑布流控件

    這篇文章主要介紹了如何基于WPF實現(xiàn)簡單的瀑布流控件,文中的示例代碼講解詳細,對我們的學習或工作有一定幫助,需要的小伙伴可以參考一下
    2024-02-02
  • C#子線程更新UI控件的方法實例總結(jié)

    C#子線程更新UI控件的方法實例總結(jié)

    這篇文章主要介紹了C#子線程更新UI控件的方法,在桌面應用程序中控制UI界面有著不錯的實用價值,需要的朋友可以參考下
    2014-09-09
  • WinForm實現(xiàn)為TextBox設置水印文字功能

    WinForm實現(xiàn)為TextBox設置水印文字功能

    這篇文章主要介紹了WinForm實現(xiàn)為TextBox設置水印文字功能,很實用的一個技巧,需要的朋友可以參考下
    2014-08-08
  • C#實現(xiàn)TreeView節(jié)點拖拽的方法

    C#實現(xiàn)TreeView節(jié)點拖拽的方法

    這篇文章主要介紹了C#實現(xiàn)TreeView節(jié)點拖拽的方法,涉及C#針對TreeView節(jié)點的動態(tài)添加及移除技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • 字符串內(nèi)存駐留機制詳解示例

    字符串內(nèi)存駐留機制詳解示例

    字符串內(nèi)存駐留機制詳解示例,大家參考使用吧
    2013-12-12
  • C#控制臺程序中使用官方依賴注入的實現(xiàn)

    C#控制臺程序中使用官方依賴注入的實現(xiàn)

    這篇文章主要介紹了C#控制臺程序中使用官方依賴注入的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • C#實現(xiàn)鬧鐘AlarmClock實例代碼

    C#實現(xiàn)鬧鐘AlarmClock實例代碼

    這篇文章主要介紹了C#實現(xiàn)鬧鐘AlarmClock實例代碼,很實用的功能,需要的朋友可以參考下
    2014-08-08
  • C#實現(xiàn)ArrayList動態(tài)數(shù)組的示例

    C#實現(xiàn)ArrayList動態(tài)數(shù)組的示例

    ArrayList是一個動態(tài)數(shù)組,可以用來存儲任意類型的元素,本文就來介紹一下C#實現(xiàn)ArrayList動態(tài)數(shù)組的示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12

最新評論