.Net Core 2.1 用 session 的問題

最近想說用 .Net Core 寫個程式測試一下 以後說不定 就可在 unix 主機上跑
用了一下 幾個問題
現在應該是更新到 2.2
但是 有些 NUGet 的套件卻無法更新到 2.2 只能用 2.1 (現在還不知怎麼用到 2.2 好像出到3.0了)
這就算了

網路的資料不一定是可用的
就好像 jquery 從 2.x 變成 3.x 版之後 網路查到的資料不一定是有用的
Core 也碰到這問題
像 用 session 這東西
Core 上頭 是沒法直接用,需要安裝設定一堆
詳細設定是參考 https://www.cnblogs.com/sword-successful/p/6243841.html
微軟家 https://docs.microsoft.com/zh-tw/aspnet/core/fundamentals/app-state?view=aspnetcore-2.2
經測試
HttpContext.Session.SetString("Test", "Ben Rules!");
下一個
string ss= HttpContext.Session.GetString("Test");
就讀不出來是null

查老半天 終於
 https://stackoverflow.com/questions/49770491/session-variable-value-is-getting-null-in-asp-net-core
看到要加
services.Configure<CookiePolicyOptions>(options =>
{
  // This lambda determines whether user consent for non-essential cookies is needed for a given request.
  options.CheckConsentNeeded = context => false;
  options.MinimumSameSitePolicy = SameSiteMode.None;
});
擺到   services.AddSession(); 後面
// 將 Session 存在 ASP.NET Core 記憶體中
            services.AddDistributedMemoryCache();
            services.AddSession();
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => false;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

才正常
微軟家是這樣
C#
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });

    services.AddDistributedMemoryCache();

    services.AddMvc()
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    services.AddSession(options =>
    {
        options.Cookie.Name = ".AdventureWorks.Session";
        options.IdleTimeout = TimeSpan.FromSeconds(10);
    });
}
沒標黃色 所以沒注意就跳過 .....就不能用
記一下

看來還有一段路走




留言

熱門文章