Система, над которой я работаю, не использует стандартные средства аутентификации / членства ASP.NET для входа / выхода пользователей.Поэтому после входа пользователя в систему я хочу выдать новый идентификатор сеанса для пользователя, чтобы предотвратить перехват / перехват сеанса.У меня проблема в том, что, хотя я смог успешно создать новый сеанс с новым идентификатором и скопировать различные компоненты во вновь созданный сеанс, например.сессия [ "значение"].К концу приведенного ниже фрагмента кода вновь созданный сеанс является текущим сеансом HTTPContext и содержит значения сеанса, которые были скопированы.Однако после выполнения Response.Redirect новый сеанс находится в действии, но ни одно из сеансов ["значений"] не сохранилось между двумя запросами.Как вы можете видеть из приведенного ниже кода, я попытался добавить значения ко многим коллекциям, чтобы они были полезны.Заранее спасибо
bool IsAdded = false;
bool IsRedirect = false;
HttpSessionState state = HttpContext.Current.Session;
SessionIDManager manager = new SessionIDManager();
HttpStaticObjectsCollection staticObjects = SessionStateUtility.GetSessionStaticObjects(HttpContext.Current);
SessionStateItemCollection items = new SessionStateItemCollection();
foreach (string item in HttpContext.Current.Session.Contents)
{
var a = HttpContext.Current.Session.Contents[item];
items[item] = a;
}
HttpSessionStateContainer newSession = new HttpSessionStateContainer(
manager.CreateSessionID(HttpContext.Current),
items,
staticObjects,
state.Timeout,
true,
state.CookieMode,
state.Mode,
state.IsReadOnly);
foreach (string item in HttpContext.Current.Session.Contents)
{
var a = HttpContext.Current.Session.Contents[item];
newSession.Add(item,a);
}
SessionStateUtility.RemoveHttpSessionStateFromContext(HttpContext.Current);
SessionStateUtility.AddHttpSessionStateToContext(HttpContext.Current, newSession);
manager.RemoveSessionID(HttpContext.Current);
manager.SaveSessionID(HttpContext.Current, newSession.SessionID, out IsRedirect, out IsAdded);
return newSession.SessionID;