加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何在EnableSessionState =“False”的请求中获取Se

发布时间:2020-12-16 09:56:35 所属栏目:asp.Net 来源:网络整理
导读:我希望能够在WebMethod函数中获取当前经过身份验证的会话的SessionID,其中EnableSession = false. 我无法在此请求上设置EnableSession = true,因为另一个页面上的另一个(长时间运行的)请求会使SessionState保持锁定状态(EnableSessionState ==“True”而不是
我希望能够在WebMethod函数中获取当前经过身份验证的会话的SessionID,其中EnableSession = false.

我无法在此请求上设置EnableSession = true,因为另一个页面上的另一个(长时间运行的)请求会使SessionState保持锁定状态(EnableSessionState ==“True”而不是“Readonly”).

是否有一致的方法从ASP.NET会话cookie或Url获取SessionID用于无cookie会话?我可以自己编写代码,但我宁愿使用已经记录和测试过的函数.

非常感谢你,
弗罗林.

解决方法

似乎没有可以做到这一点的ASP.NET函数,所以我编写了一个我自己的hack,它的工作原理…现在;):

private string GetSessionID(HttpContext context)
{
  var cookieless = context.Request.Params["HTTP_ASPFILTERSESSIONID"];
  if (!string.IsNullOrEmpty(cookieless))
  {
    int start = cookieless.LastIndexOf("(");
    int finish = cookieless.IndexOf(")");
    if (start != -1 && finish != -1)
      return cookieless.Substring(start + 1,finish - start - 1);
  }
  var cookie = context.Request.Cookies["ASP.NET_SessionId"];
  if (cookie != null)
    return cookie.Value;
  return null;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读