会话ID正在更改ASP.NET Core 2.1 Web API中的每个请求

时间:2018-12-14 11:16:06

标签: angularjs asp.net-core-webapi asp.net-core-2.1

我正在研究asp.net核心Web应用程序。我不太了解会话状态。当我登录该应用程序时,我已经获得了会话ID,并且使用HttpContext.Session将一些用户数据推送到了会话中。该值在当前sessionid下。然后,我将该会话ID发送给客户端(浏览器)。我在使用angularjs的地方。

每当我登录后发送请求。我已经在请求标头中发送了sessionid和请求。但是在请求到达我的后端(WebApi)之后,我在HttpContext.Session中看到了另一个sessionid。但我有我的sessionid那些会话值。但是使用当前的HttpContext.Session的sessionid无法获得这些会话值。

我是否必须通过请求标头附带的sessionid来获取这些会话值,还是必须更改HttpContext.Session的sessionid还是不允许为每个请求更改HttpContext.Session的sessionid。我提到的所有内容都已尝试过,但无能为力。还有什么呢?请有人帮我!我可以在网上看到很多有关它的答案,但所有内容都是针对.Net Framework而不是针对ASP.Net core 2.1。

这是我的代码,

我在用户控制器中设置了会话值。登录后,我将在报价创建页面中填写数据并提交。同时,我必须在报价控制器创建方法中获取会话值(存储在用户控制器登录方法中)。因此当前请求的sessionid在Httpcontext中更改(即使我使用IHttpContextAccessor)。因此无法获取我的会话值

    public class UserController : Controller {
public string Login(User objUser)
{... 
HttpContext.Session.SetString("CompanyId", "1");
...}

}

public class QuoteController : Controller {
public string CreateQuote([FromBody]Quote objQuote)
{... 
var companyId = HttpContext.Session.GetString("CompanyId");
...}

}

1 个答案:

答案 0 :(得分:0)

这应该有所帮助。您可以进入季节 通过 HttpContext

检查此示例如何使用seasson字符串。

using Microsoft.AspNetCore.Http;

public class HomeController : Controller {
    public IActionResult Index()
    { 
    HttpContext.Session.SetString("Test", "Testing Session.");
    return View();
    }

    public IActionResult About()
    {
    ViewBag.Message = HttpContext.Session.GetString("Test");

    return View();
    }
}