Session 导航离开后未保存会话状态
我使用Session 导航离开后未保存会话状态,session,asp.net-core,state,Session,Asp.net Core,State,我使用HttpContext.Session保存用户的一些发票信息, 当他/她去第三个站点支付费用并返回我的站点时,所有会话数据都是null,我不知道他/她发票号是什么! 我应该如何实现这一点?您可以注册应用程序以使用 Startup.cs 在ConfigureServices services.AddMvc().AddSessionStateTempDataProvider(); services.AddSingleton<IHttpContextAccessor, HttpContex
HttpContext.Session
保存用户的一些发票信息,
当他/她去第三个站点支付费用并返回我的站点时,所有会话数据都是null
,我不知道他/她发票号是什么!
我应该如何实现这一点?您可以注册应用程序以使用 Startup.cs 在
ConfigureServices
services.AddMvc().AddSessionStateTempDataProvider();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddSession();
我用这个控制器进行了测试
public IActionResult Index()
{
var on = HttpContext.Session.GetString("ordernumber");
HttpContext.Session.SetString("ordernumber", "123456");
return Redirect("http://google.com");
}
在我们被重定向到google之后,如果我导航回localhost,我可以看到上的包含“123456”
如果您想在视图中显示它,可以插入我们之前注册的HttpContextAccessor
:
@using Microsoft.AspNetCore.Http;
@inject IHttpContextAccessor HttpContextAccessor
@{
ViewData["Title"] = @HttpContextAccessor.HttpContext.Session.GetString("ordernumber");
}
您需要什么样的信息?TempData provider在您的解决方案中甚至没有发挥作用。事实上,如果您使用了它,您的解决方案将是错误的。此外,您不需要在视图中插入IHttpContextAccessor
。HttpContext
已可用于以下视图:ViewContext.HttpContext
@ChrisPratt如果不注入contextaccessor,我无法使其工作,并且如果不注册临时提供程序,也无法设置会话值
@using Microsoft.AspNetCore.Http;
@inject IHttpContextAccessor HttpContextAccessor
@{
ViewData["Title"] = @HttpContextAccessor.HttpContext.Session.GetString("ordernumber");
}