Asp.net пользовательское событие поставщика состояний сеанса вызывается несколько раз
Ниже события, вызывающие несколько раз:
public override SessionStateStoreData GetItemExclusive(HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actionFlags) { return GetSessionStoreItem(true, context, id, out locked, out lockAge, out lockId, out actionFlags); } public override void ReleaseItemExclusive(HttpContext context, string id, object lockId) { string tmpQuery = @"UPDATE Sessions SET Locked = 0, Expires = @expires@ WHERE SessionId = '@sess_id@' AND ApplicationName = '@app_name@' AND LockId = '@lock_id@'"; tmpQuery = tmpQuery.Replace("@expires@", convDate_forQuery(DateTime.Now.AddMinutes((double)(pConfig.Timeout.Minutes)))); tmpQuery = tmpQuery.Replace("@sess_id@", id); tmpQuery = tmpQuery.Replace("@app_name@", ApplicationName); tmpQuery = tmpQuery.Replace("@lock_id@", lockId.ToString()); try { SessDataAccess.ExecuteNQ(tmpQuery); } catch (Exception e) { if (WriteExceptionsToEventLog) { WriteToEventLog(e, "ReleaseItemExclusive"); throw (e); } else throw e; } }
Журнал событий:
- 2/20/2020 1:40:43 PM:GetItemExclusive
- 2/20/2020 1:40:43 PM:GetItemExclusive
- 2/20/2020 1:40:43 PM:GetItemExclusive
- 2/20/2020 1:40:43 PM:GetItemExclusive
- 2/20/2020 1:40:43 PM:GetItemExclusive
- 20-02-2020 13:40:43:инициализация
- 2/20/2020 1:40:43 PM:GetItemExclusive
- 2/20/2020 1:40:43 PM:ReleaseItemExclusive
- 2/20/2020 1:40:43 PM:ReleaseItemExclusive
- 2/20/2020 1:40:43 PM:ReleaseItemExclusive
- 2/20/2020 1:40:43 PM:ReleaseItemExclusive
- 2/20/2020 1:40:43 PM:ReleaseItemExclusive
- 2/20/2020 1:40:43 PM:ReleaseItemExclusive
Может ли кто - нибудь помочь мне в этом! заранее спасибо.
Что я уже пробовал:
Я пытался вести логи, сколько раз он звонил
Richard Deeming
tmpQuery = tmpQuery.Replace("@expires@", convDate_forQuery(DateTime.Now.AddMinutes((double)(pConfig.Timeout.Minutes))));
Не делай этого так!
Ваш код почти наверняка уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
Вам нужно обновить свой
SessDataAccess
класс так что это Не принудительно вводить значения параметров непосредственно в запрос.