【问题标题】:Session Id is changing every request in ASP.NET core 2.1 web api会话 ID 正在更改 ASP.NET 核心 2.1 Web api 中的每个请求
【发布时间】:2018-12-17 20:09:48
【问题描述】:

我正在开发 asp.net 核心网络应用程序。我不太了解会话状态。当我登录应用程序时,我得到了会话 ID,并且我已经使用 HttpContext.Session 将一些用户数据推送到会话中。该值在当前 sessionid 下。然后我将该 sessionid 发送给客户端(浏览器)。我在哪里使用 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");
...}

}

【问题讨论】:

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


    【解决方案1】:

    这应该会有所帮助。您可以访问季节 通过 HttpContext

    查看此示例如何使用季节字符串。

    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();
        }
    }
    

    【讨论】:

    • 感谢@Laci R 回复我的帖子。我已经尝试过您上面提到的两种方式,但对我没有任何效果。所以我想展示我的代码,所以我已经改变了我之前帖子中的问题,请查看它并提供另一个解决方案
    猜你喜欢
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多