使用.NET 4.6.1我想在类库中使用Sessionstate,例如:
public static void SetUserId()
{
HttpContext.Current.Session["userId"] = 1;
}
但是当我调用此方法时,它会抛出异常“处理请求时发生未处理的异常。” > “NullReferenceException:对象引用未设置为对象的实例。” 我在类库中引用了system.Web。在.NET 4中,我可以安全地执行此操作。但它是.NET 4.6.1中的一个问题。 我怎么解决这个问题? 感谢
答案 0 :(得分:1)
默认情况下为null
,驱动 ASP.NET Core 1.0 的概念是可插拔的中间件。您需要明确选择加入会话。
您需要确保Microsoft.Extensions.Caching.Memory
中存在Microsoft.AspNet.Session
和project.json
个依赖关系。然后在你的
Startup.cs
添加以下内容:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddCaching();
services.AddSession(options => {
options.IdleTimeout = TimeSpan.FromMinutes(30);
options.CookieName = ".MyApplication";
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseSession();
// Removed for brevity...
}
详细文章here。这应该就是你需要做的一切。
<强>更新强>
避免尝试在Web应用程序之外使用HttpContext.Current
。这仅适用于HTTP请求/响应管道的上下文中。最好使用抽象来实现您正在寻找的所需交互。
我需要您分享更多源代码,以便提供一个明确的示例。