zoukankan      html  css  js  c++  java
  • WebApi Session支持

    代码:

    WebApiConfig

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Http;
    using System.Web.Http;
    using System.Configuration;
    using Microsoft.Owin.Security.OAuth;
    using Newtonsoft.Json.Serialization;
    
    using System.Web.Http.Cors;
    using System.Web.Http.WebHost;
    using System.Web.SessionState;
    using System.Web.Routing;
    using System.Web;
    
    namespace WorkOrderManage.API
    {
        public static class WebApiConfig
        {
            public static void Register(HttpConfiguration config)
            {
                // Web API 配置和服务
                // 将 Web API 配置为仅使用不记名令牌身份验证。
                config.SuppressDefaultHostAuthentication();
                config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
    
                //// Web API 路由
                //config.MapHttpAttributeRoutes();
    
    
                //config.Routes.MapHttpRoute(
                //    name: "DefaultApi",
                //    routeTemplate: "api/{controller}/{action}/{id}",
                //    defaults: new { id = RouteParameter.Optional, namespaceName = "WorkOrderManage.API.Controllers" }
                //);
    
              // 全局里面已经有了,如果添加这个路由,那么全局里面的就会无效
              //  config.Routes.MapHttpRoute(
              //    name: "Admin Area Default",
              //    routeTemplate: "api/admin/{controller}/{action}/{id}",
              //    defaults: new { id = RouteParameter.Optional, namespaceName = "WorkOrderManage.API.Areas.Admin.Controllers" }
              //);
    
            }
        }
    
        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);
            }
        }
    
    }

    添加下面的两个类,注释掉里面的路由,在全局里面添加路由

    Global.asax

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Http.Formatting;
    using System.Web;
    using System.Web.Http;
    using System.Web.Mvc;
    using System.Web.Optimization;
    using System.Web.Routing;
    using System.Web.SessionState;
    using WorkOrderManage.API.Utility;
    
    namespace WorkOrderManage.API
    {
        public class WebApiApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();         
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
                var jsonFormatter = new JsonMediaTypeFormatter();
                GlobalConfiguration.Configuration.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));
    
    
                RouteTable.Routes.MapHttpRoute(
                   name: "Admin Area Default",
                   routeTemplate: "api/admin/{controller}/{action}/{id}",
                   defaults: new { id = RouteParameter.Optional, namespaceName = "WorkOrderManage.API.Areas.Admin.Controllers" }
                ).RouteHandler = new SessionControllerRouteHandler();
    
                RouteTable.Routes.MapHttpRoute(
                 name: "Email Area Default",
                 routeTemplate: "api/email/{controller}/{action}/{id}",
                 defaults: new { id = RouteParameter.Optional, namespaceName = "WorkOrderManage.API.Areas.Email.Controllers" }
              ).RouteHandler = new SessionControllerRouteHandler();
               
            }
    
            public override void Init()
            {
                PostAuthenticateRequest += MvcApplication_PostAuthenticateRequest;
                base.Init();
            }
    
            void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
            {
                HttpContext.Current.SetSessionStateBehavior(
                    SessionStateBehavior.Required);
            }
             
        }
    }

    在这个里面添加路由

    不能在全局里添加路由,又在webapiconfig里面添加一个同名的路由

    返回

     

    再次请求:

    http://www.cnblogs.com/firstcsharp/p/4482835.html

  • 相关阅读:
    移动端输入框的那些事
    HTML的各个标签的默认样式
    window.location.Reload()和window.location.href 区别
    JavaScript惰性函数定义
    JavaScript将具有父子关系的原始数据格式化成树形结构数据(id,pid)
    jQuery验证控件jquery.validate.js使用说明+中文API
    统计网页浏览次数
    vue 组件开发 props 验证
    vue过滤器在v2.0版本用法
    JQ中get()与eq()的区别
  • 原文地址:https://www.cnblogs.com/hongdada/p/4708824.html
Copyright © 2011-2022 走看看