【问题标题】:Get user's session ID in asp.net mvc在 asp.net mvc 中获取用户的会话 ID
【发布时间】:2017-08-16 06:38:39
【问题描述】:

在一个 asp.net mvc 应用程序中,我想使用一个 REST Web 服务来返回与作为参数传递的会话 ID 关联的用户名。

如何获取登录用户的 sessionID?

我需要在我的登录方法中手动设置会话 ID 吗?

另外,如何使用会话 ID 获取用户信息?

任何帮助将不胜感激。谢谢!

帐户控制器中的登录方法:

[HttpPost]
    public ActionResult LogIn(UserLoginView ULV, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            UserManager UM = new UserManager();
            string password = UM.GetUserPassword(ULV.EmailID);

            if (string.IsNullOrEmpty(password))
                ModelState.AddModelError("", "*The Email-ID or Password provided is incorrect");
            else
            {
                if (ULV.Password.Equals(password))
                {
                    FormsAuthentication.SetAuthCookie(ULV.EmailID, false);
                    if (Url.IsLocalUrl(returnUrl))
                    {
                        return Redirect(returnUrl);
                    }
                    else
                    {
                        return RedirectToAction("Index", "Home");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "*The Password provided is incorrect");
                }
            }
        }

        return View();
    }

用户控制器中的Web服务方法:

 public class UserController : ApiController
    {
    [HttpGet]
    public string UserInfo()
    {
       HttpSessionState sessionValue = HttpContext.Current.Session;

        return sessionValue.SessionID.ToString();

    }
}

【问题讨论】:

  • 是的。我刚刚确认解决方案here 将解决您的问题。很酷。

标签: c# asp.net asp.net-mvc session


【解决方案1】:

link此链接中的第一个答案给出了获取会话ID的解决方案。

【讨论】:

    【解决方案2】:

    您使用的是哪个版本的 .NET?使用 .NET Framework 4.5.2 我能够使用以下方法获取 SessionID 值:string sessionID = HttpContext.Session.SessionID;

    【讨论】:

    • 我用的是同一个版本。我仍然在 sessionID 行上得到一个空引用异常。
    • 我明白了。尝试在 WebAPI 控制器方法中从 HttpContext.Current.Session 获取 SessionID 时,我也会收到 NullReferenceException,因为 Session 为 NULL。这在 MVC 页面控制器方法中不会发生。而在 MVC 控制器方法中,HttpContext.Current 似乎不存在。我必须在 MVC 控制器方法中使用 HttpContext.Session。我刚刚阅读了一篇文章,其中指出 WebAPI 方法是无会话的。 link
    • 尝试在此 Stack Overflow 帖子中阅读有关在 WebAPI 中启用会话的信息:.NET Web API + Session Timeout
    • 我得到了解决方案。 link 原来没用!
    • 非常感谢您的宝贵时间和帮助@John
    猜你喜欢
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    相关资源
    最近更新 更多