在asp.net mvc中,我们使用属性[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)] 来装饰控制器来禁用会话状态;
而Asp.Net Core中则相反,需要先引入 Microsoft.AspNetCore.Session(提供管理Session的中间件),并且在Startup.cs文件中的ConfigureServices方法中添加 services.AddSession() ,在Configure方法中添加 app.UseSession(),才能启用Session。
https://www.cnblogs.com/OpenCoder/p/10362844.html
https://www.it1352.com/1771345.html
The Microsoft.AspNetCore.Session package, which is included in the Microsoft.AspNetCore.App metapackage, provides middleware for managing session state. To enable the session middleware,Startup must contain:
- Any of the IDistributedCache memory caches. The IDistributedCache implementation is used as a backing store for session.
- A call to AddSession in ConfigureServices.
- A call to UseSession in Configure.
Code:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.Cookie.HttpOnly = true;
});
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseHttpContextItemsMiddleware();
app.UseMvc();
}
}
HttpContext.Session is available after session state is configured.
HttpContext.Session can't be accessed before UseSession has been called.