我们正在努力将我们的整体ASP.NET Webform应用程序移动到微服务,首先,我们使用Nginx作为代理路由器,Node express作为API网关 . 从浏览器,任何.aspx请求将从Nginx路由到现有的ASP.NET Webform应用程序,新的调用将路由到API Gateway Till路由它的所有工作正常但问题是会话管理,ASP.NET Webform应用程序正在使用Redis as会话存储和我们尝试访问API网关的同一会话ASP.NET将sessionID存储在“ASP.NET_SessionId”cookie中,而在Redis中,每个会话创建两个密钥,如SessionID_Data SessionID_Internal我们尝试将Express-redis会话设置为相同Gateway中的“ASP.NET_SessionId”但它创建了不同的密钥,然后我们尝试获取cookie值并尝试在API网关中生成相同的ID

enter code here
    app.use(session({
      genid: function(req) {
        //Get SessionID from Cookie and Return
  },
      store: new RedisStore({
       host:HOST,
       port:PORT,
       pass:PASSWORD,
       prefix: APP_PREFIX //Application Prefix used by ASP.NET
      }),

      name: 'ASP.NET_SessionId',
      secret: APP_SECRET,
      resave: false,
      saveUninitialized: false
    }));

问题是ASP.NET为每个用户会话在Redis中创建了两个密钥,因此我们无法设置API网关

有没有办法在API网关中共享ASP.NET Web表单会话,或者如果我们创建身份验证和会话管理作为单独的微服务,那么该会话可以在ASP.NET Web表单和API网关中使用,它将自动增加Redis的TTL每个请求上的密钥?