我正在研究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");
...}
}
答案 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();
}
}