【问题标题】:How to instantiate an ASP.net (MVC 5) Session Variable?如何实例化 ASP.net (MVC 5) 会话变量?
【发布时间】:2017-09-04 19:59:56
【问题描述】:

我尽我所能理解了微软的文档,添加了这个;

// Adds a default in-memory implementation of IDistributedCache.
        services.AddDistributedMemoryCache();

        services.AddSession(options =>
        {
            // Set a short timeout for easy testing.
            options.IdleTimeout = TimeSpan.FromSeconds(10);
            options.CookieHttpOnly = true;
        });

到 ConfigureServices(IServiceCollection services) 和这个;

app.UseSession();

配置(IApplicationBuilder 应用程序,...

然而,当我尝试在任何控制器的任何操作中访问 HttpContext.Session 我得到一个空引用异常。

我正在尝试强制实例化,但不知道要分配什么。我知道 HttpContext.Session 是一个 ISession 但我不知道是什么实现了该接口,如果我必须自己为某些键值对实现它是荒谬的。

我做错了什么?

-- 笔记: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state

【问题讨论】:

  • app.UseSession() 是在 app.UseMvc() 之后吗?如果是这样,您能否添加更多代码,因为从您显示的内容来看,它看起来是正确的。
  • 是的。这就是问题所在。我阅读了 Vladimir 发布的文章。
  • 请不要添加问题的答案,也不要使用 [已解决] 标题设备。如果您希望在现有已接受的答案中添加更多内容,欢迎您添加自己的答案。

标签: c# asp.net asp.net-mvc


【解决方案1】:

据我了解,您需要阅读此one。就我而言,它很有用。

更新:

在这种情况下,解决方案以正确的顺序启动服务并添加它们的用途。正确的顺序:

   1. AddMvc  
   2. AddCaching  
   3. AddSession
   4. UseSession
   5. UseMvc

【讨论】:

  • 只添加一个链接是一个非常糟糕的答案。请从链接中提取要点,即使链接的文章将来可能下线,此答案仍然有效
  • 在这种情况下,UseSession 必须在 UseMvc 之前
  • 请注意,我还编辑了最初的问题以反映此解决方案。
猜你喜欢
  • 2010-11-29
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
相关资源
最近更新 更多