c# - Razor 会话数据 - HttpContextAccessor 为空
问题描述
我是 MVC5 新手,正在创建一个测试网站来查看 MVC5 和 Razor
用户登录后我有一个非常简单的站点,我需要通过“登录”中的 _Layout 更改菜单以添加“注销”“帐户”。
注意:该站点有自己的身份验证,稍后我将查看单点登录。
我真的很难在 MVC5 中管理会话数据,不确定哪个是最好的方法。我已经尝试过 TEMP DATA ,但是虽然我达到了顶峰,但我发现在用户在几页之间重定向后,数据丢失了。所以看着好的旧 cookie,但由于 GDPR,我可以看出对开箱即用的 cookie 的默认支持要少得多。
无论如何,在初创公司我相信我做的都是正确的
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
// Set session timeout value
options.IdleTimeout = TimeSpan.FromSeconds(30);
options.Cookie.HttpOnly = true;
});
}
services.AddMvc();
services.AddCaching();
services.AddSession();
services.AddHttpContextAccessor();
依赖项将其注入,但在我尝试调用 SetString 的 Post 中,“私有只读 IHttpContextAccessor _httpContextAccessor;” 一片空白
奇怪的是 _Layout 没有抛出相同的空异常
@using Microsoft.AspNetCore.Http
@inject IHttpContextAccessor HttpContextAccessor
@{
string UserId = HttpContextAccessor.HttpContext.Session.GetString("UserId");
}
在 ASP.Net 工作之后,处理 Session 的简单方法,开始质疑我是否错过了一些东西,因为在 MVC5 中似乎有很多工作。那么我应该在 MVC5 中使用不同的方法吗
解决方案
放
options.CheckConsentNeeded = context => false;
这是真的,即
options.CheckConsentNeeded = context => true;
并且您的会话将不再为空。
推荐阅读
- iis - URL 重写到不同的虚拟目录而不更改 URL
- php - 如何验证PHP中是否存在一行?
- javascript - 使用递归的Javascript洪水填充算法
- python - 不同形式的人名表示的正则表达式
- x86 - 是什么导致 DTLB_LOAD_MISSES.WALK_* 性能事件发生?
- php - 当 GoDaddy 主机上的 JSON 内容超过 1MB 时,ajax GET 失败
- c# - CustomEditor Unity:一次选择枚举+显示数组
- django - 类型错误:int() 参数必须是字符串、类似字节的对象或数字,而不是“DeferredAttribute”
- java - Jsoup:无法提取 img 标签
- ios - iOS 自定义键盘图标