Самое первое, что вы должны сделать, это ОСТАНОВИТЬ использование сеанса .
Серьезно, отойти от объекта сеанса.
Надлежащее использование сеанса является долгосрочнымдовольно неизменные данные.Данные, которые должны изменяться буквально в каждом посте и т. Д., Принадлежат самой странице.
Вот что происходит.
Вы нажимаете на ссылку, чтобы загрузитьдо проекта.Переменная Session устанавливается с текущим идентификатором проекта.
Затем вы нажимаете на ссылку, чтобы получить следующий проект,
- Затем быстро нажимаете нассылка, чтобы получить тот после этого.
Сервер, тем временем, является многопоточным.# 3 в основном прервал исполнение # 2 .. и побежал до # 2.Это означает, что ваша переменная сеанса подключена.
Почему третий запрос выполняется перед вторым?Ну, вы выполняете ряд запросов.Вероятно, что запросы для запроса 2 выполняются немного дольше, чем запросы для запроса 3.
Решение: прекратить использование сеанса.
Почему: вы не можете предсказать порядок, в котором IIS будет отвечать на запросы.IIS - это параллельный (не последовательный) механизм, и запросы вполне могут происходить в той последовательности, в которой, как вы думаете, они должны.
Наконец, парень, который сказал, что сеанс заблокирован первым запросчиком, не совсем точен.Он ЗАПИСАН заблокирован ... но это происходит только тогда, когда страница начинает запись в сеанс.Чтения не блокируются.
Таким образом, когда запрос 3 выполняется, он использует идентификатор запроса 1 или 2. В зависимости от того, какой из них еще активен к тому времени, когда он достигает кода записи.