ASP.NET_SessionId cookie 设置得太晚,TempData 无法正常工作

问题描述 投票:0回答:1

我们在 ASP.NET MVC 网站中使用 TempData 来传输成功消息,但是我们发现设置

TempData["message"]
第一次无法按预期工作。

我们发现 ASP.NET_SessionId cookie 是在第一次设置 TempData 之后设置的,而不是作为下一个响应的一部分提供

TempData["message"]

TempData 的所有后续使用均按预期工作。

我们可以做些什么来快速填充此 ASP.NET_SessionId cookie,以便 TempData 始终有效吗?

asp.net-mvc session-cookies
1个回答
0
投票

您可以在请求开始时显式访问会话状态,例如使用basecontroller,这可能会导致初始化会话状态并在访问tempData之前设置sessionId cookie

public class BaseController: Controller
{
    var session = HttpContext.Session;
}

然后继承这个控制器

public class TodoController:BaseController
{
   public IActionResult DoSomething()
   {
       Tempdata["message"]="Welcome Todo";
       return view();
   }    
}
© www.soinside.com 2019 - 2024. All rights reserved.