我开发了ASP。. NET core MVC应用程序,我想访问这样的会话变量:
var currentProject = HttpContext.Session.GetString("CurrentProject");
如果我在我的机器上本地运行这个,currentProject永远不会为空,但是如果我在GCP CloudRun上托管这个应用程序,我不时会遇到currentProject = null的情况;这完全是随机发生的——我可以成功运行我的应用100次,然后突然有一天我连续5次得到空值,在第6次它又工作了。这种情况会不断重复。有什么想法吗,可能是什么原因?
这是我的部分配置,也许这可能会给一些想法:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSession();
builder.Services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
app.UseSession();
将此作为社区wiki发布,以帮助其他可能遇到此问题的社区成员。
@DavidG:
会话数据可能由于多种原因而消失。如果应用程序重新启动,或者如果会话过期,例如。尝试捕获会话开始/结束事件。
检查它的目的是防止页面在会话为空的情况下抛出一个丑陋的NullReferenceException
。如果你检查它是否为空,你可以更新你的页面会话,或者重定向到一个登录页面,例如。