Web API 开启Session支持

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web API 开启Session支持相关的知识,希望对你有一定的参考价值。

    Web API中默认是没有开启Session支持的,开启Session支持,需要进行以下操作,以下操作分两种,都是在Global.asax文件中添加代码的。

  • 这时要在Global.asax里添加如下代码,开启Session功能(重写Init方法)   

/// <summary>
/// 开启WebAPI中的Session支持
/// </summary>
public override void Init()
{
this.PostAuthenticateRequest += (sender, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
base.Init();
}
  • 添加以下代码,判断如果是WebAPI的话,则打开Session功能

/// <summary>
/// 判断是否是Web API请求
/// </summary>
/// <returns></returns>
private bool isWebAPiRequest()
{   
    //根据应用程序根的虚拟路径来判断是否是API程序
    return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.ToLower().StartsWith(WebApiExecutePath);
}
/// <summary>
/// 如果是API,则打开Session
/// </summary>
protected void Application_PostAuthorizeRequest()
{
    if (isWebAPiRequest())
    { 
      	   HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
    }
}

    同时在WebAPI中测试Session的写入是否正确时,要注意Session的写入和读取要用同样的浏览器或工具,我在测试的过程中,就犯了个低级错误,Session有写入,但是一直获取不到,就因为我是通过浏览器进行登录测试写Session的,却在PostMan中去获取Session,却一直获取不到。

本文出自 “为何一笑” 博客,请务必保留此出处http://helicon.blog.51cto.com/3926609/1912142

以上是关于Web API 开启Session支持的主要内容,如果未能解决你的问题,请参考以下文章

web api中的RouteHandler

.net webapi项目中支持session

Java Web 浏览器关闭后Session就会被销毁吗?

Shiro-Session

nginx配置反向代理支持session

flutter解决 dart:html 只支持 flutter_web 其他平台编译报错 Avoid using web-only libraries outside Flutter web(代码片段