【问题标题】:Add 'Microsoft.AspNetCore.Session': ArgumentNullException: Value cannot be null添加“Microsoft.AspNetCore.Session”:ArgumentNullException:值不能为空
【发布时间】:2018-04-21 11:46:17
【问题描述】:

我想将“Microsoft.AspNetCore.Session”包集成到我的 aspnetboilerplate 解决方案 (ASP.NET Core 2.x) 中以使用会话。

我通过 NuGet 将“Microsoft.AspNetCore.Session”包添加到我的 Web.Mvc 项目中。然后我将以下代码插入ConfigureServices方法(Startup.cs):

    // Session Configuration
    services.AddSession(options =>
    {
        // Set a short timeout for easy testing.
        options.IdleTimeout = TimeSpan.FromHours(4);
        options.Cookie = new CookieBuilder { HttpOnly = true };
    });

之后我在Configure 方法(Startup.cs)中在app.UseAbp() 之后调用app.UseSession()

现在,如果我运行应用程序,我会收到以下错误:

Microsoft.AspNetCore.Server.Kestrel - 连接 ID“0HL96OHPL754P”, 请求 ID“0HL96OHPL754P:00000001”:引发了未处理的异常 由应用程序。 System.ArgumentNullException:值不能 空值。参数名称:key at Microsoft.AspNetCore.Http.Internal.RequestCookieCollection.get_Item(字符串 键)在 Microsoft.AspNetCore.Session.SessionMiddleware.d__9.MoveNext()

如果我删除app.UseSession() 调用,应用程序将正常运行。

有什么想法吗?请帮忙!

【问题讨论】:

  • 您可以尝试在 CookieBuilder 中指定 cookie 的名称吗?

标签: c# asp.net-core aspnetboilerplate


【解决方案1】:

我找到了解决问题的方法。感谢 juunas 的提示。

我必须更改会话配置:

// Session Configuration
services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromHours(4);
    options.Cookie.HttpOnly = true; // correct initialization
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多