c# - 为什么会话在 Net Core 项目中不起作用?
问题描述
我正在尝试在我的项目中添加一个会话。我添加了所有定义和参考。当我设置会话时,会话有一个值。但在另一个动作中,会话似乎为空
我将此配置添加到 Startup.cs:
namespace LDI.Web
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDistributedMemoryCache();
services.AddSession(options => {
options.IdleTimeout = TimeSpan.FromMinutes(30);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
我正在使用 NetCore 2.1,并且我已经实现了Microsoft.AspNetCore.Session
依赖项。
HomeController.cs:
[HttpPost]
public IActionResult Login(User user)
{
Context db = new Context();
UserRepo repo = new UserRepo(db);
Expression<Func<User,bool >> filter = x => x.Username==user.Username && x.Password==user.Password;
User currentUser = repo.Get(filter);
if (currentUser != null)
{
HttpContext.Session.SetInt32("UserID", currentUser.ID);
int? id = HttpContext.Session.GetInt32("UserID");
//id has value
return RedirectToAction("Index");
}
return View();
}
public IActionResult Index()
{
repo = new UserRepo(db);
int? id = HttpContext.Session.GetInt32("UserID");
//id has no value
Expression<Func<User, bool>> filter = x => x.ID == id;
User user = repo.Get(filter);
ViewBag.User = user;
return View();
}
在 Login Action 中,Id 有一个值,但在 Index Action 中 session 为 null 并且 id 没有值。
解决方案
推荐阅读
- python-3.x - Matplotlib 箱线图 - 使用 for 循环绘制分组值
- hadoop - 为什么 hive 中的 CTAS 查询没有按预期给出结果?
- azure - 在 Microsoft azure 中使用 PowerApps 运行应用程序时出错
- powershell - 使用 powershell 比较 2 个 csv 文件
- excel - 导入多个txt文件错误的日期和数字格式
- ajax - 使用新数据更新 plotly.js 绘图
- x86 - 内联汇编导致分段错误(核心转储)
- c# - 如何在 C# 上从 VLC 播放 RTSP
- java - 如何返回 N1qlQueryResult 作为 Couchbase 数据库的 REST API 的响应?
- javascript - else 语句中的 Javascript 不起作用。消息未出现