C# 会话超时过期时如何运行自定义代码

C# 会话超时过期时如何运行自定义代码,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,在我的Startup.cs中,我有以下代码在时间跨度达到30分钟后终止会话 services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(30); //Session Timeout. }); 我试图在Startup.cs中实现的是,我希望包含某种bool TimeExpired=true会话过期时,添加以下代码以更新我的数据库: if(TimedExpired) { Reco

在我的Startup.cs中,我有以下代码在时间跨度达到30分钟后终止会话

services.AddSession(options => {
     options.IdleTimeout = TimeSpan.FromMinutes(30); //Session Timeout.
});
我试图在Startup.cs中实现的是,我希望包含某种
bool TimeExpired=true会话过期时,添加以下代码以更新我的数据库:

if(TimedExpired)
{ 
     RecordsContext oContext = new RecordsContext(); 
     List<Users> lUsers = oContext.Users.ToList();
     for(int i = 0; i < lUsers.Count; i++)
     {
          if(lUsers[i].usernameid == HttpContext.Session.GetString("usernameid")
          {
               lUsers[i].IsUserLoggedIn = false;
               oContext.SaveChanges();
               break;
          }
     }
}
if(TimedExpired)
{ 
RecordsContext-ocContext=新的RecordsContext();
List lUsers=oContext.Users.ToList();
for(int i=0;i
您是否在IIS中运行?如果是这样的话,最好从IIS开始运行。默认的
AppPool
超时为20分钟。此外,在保存更改之前,将EF上下文挂起30分钟可能不是一个好主意。除了可能的数据丢失外,它还限制了系统的可扩展性。所有这些都已准备就绪,并且会话到期时,它会工作,是的,我正在IIS中运行它(工作正常)。据说我正在尝试添加该语句。感谢不要确定我是否在正确的轨道上:TimeSpan now=DateTime.now.Minute();TimeSpan end=TimeSpan.FromMinutes(30);services.AddSession(options=>{//如果键入1到59分钟,验证码将起作用。IdleTimeout=end;});如果(现在AppPool
超时为20分钟。此外,在保存更改之前将EF上下文挂起30分钟可能不是一个好主意。除了可能的数据丢失之外,它还限制了可扩展性对于您的系统,它已经准备好了,以这种方式进行编码,并且在会话到期时工作,是的,我正在IIS中运行它(工作正常)。据说我正在尝试添加该语句。感谢您不确定我是否在正确的轨道上:TimeSpan now=DateTime.now.Minute();TimeSpan end=TimeSpan.FromMinutes(30);services.AddSession(options=>{//如果您键入1到59分钟,则验证码将起作用options.IdleTimeout=end;});If(now