這篇文章主要介紹了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)