获取用户在asp.net mvc中的会话ID

3
在一个asp.net mvc应用程序中,我想要使用一个rest webservice来返回与传递的session 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();
    }

User Controller中的Web服务方法:

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

        return sessionValue.SessionID.ToString();

    }
}

是的。我刚刚确认了这个解决方案在这里,它将修复你的问题。非常棒。 - John Verco
2个回答

7
你正在使用哪个版本的.NET?在使用.NET Framework 4.5.2时,我能够通过以下代码获取SessionID的值:string sessionID = HttpContext.Session.SessionID;

我正在使用相同的版本,但在sessionID行仍然出现了空引用异常。 - Anuja Sawant
我明白了。当在WebAPI控制器方法中尝试从HttpContext.Current.Session获取SessionID时,由于Session为NULL,我也会收到NullReferenceException。这在MVC页面控制器方法中没有发生。而在MVC控制器方法中,HttpContext.Current似乎不存在。我必须在MVC控制器方法中使用HttpContext.Session。我刚刚读了一篇帖子,指出WebAPI方法是无状态的。[链接](https://dev59.com/92gu5IYBdhLWcg3wOUq-) - John Verco
尝试阅读这篇 Stack Overflow 帖子,了解如何在 WebAPI 中启用会话:.NET Web API + Session Timeout - John Verco
我找到了解决方案。原来这个链接非常有用! - Anuja Sawant
非常感谢您的时间和帮助,@John。 - Anuja Sawant

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接