Существует множество информации о вещах, заставляющих сеанс InProc удалять объекты сеанса, но это не то, что здесь происходит. Мы пропускаем отдельные переменные в стабильных объектах сеанса InProc и не уверены, что они не записываются или теряются после успешной записи. Я подтвердил с WinDBG, что сеансы являются живыми и содержат некоторые, но не все, данные, записанные для них.
Guid g = System.Guid.NewGuid();
this.Context.Session.Add(g.ToString(), result.ImageData);
output.Write("<img src=\"display.aspx?id=" + g.ToString() + "\">");
Этот код довольно прост и работает безупречно в Test. В производстве, однако, при большой нагрузке он выходит из строя ~ 1% времени. Если мистер Смит заходит на сайт и пытается отобразить 4 фрагмента данных изображения, 2 из них могут быть сохранены во время сеанса, а два из них будут потеряны.
Объект сеанса InProc для мистера Смита существует. Журналы трафика показывают, что он нажал 4 раза, каждый с различным параметром id. Но в его объекте сеанса InProc есть только 2 направляющих вместо 4. Два объекта сеанса, которые мы захватили, соответствуют двум идентификаторам, показанным в журнале трафика (его 1-й и 3-й клики). Журналы трафика для его 2-го и 4-й клик, тем не менее, показывает идентификатор guid, которого нет в его объекте сеанса InProc.
Строки 1 и 3 приведенного выше кода, очевидно, работали для этих 2-х и 4-х кликов, иначе у него не было бы идентификатора в URI, чтобы он мог щелкнуть. Строка 2, однако, кажется, молча провалилась каким-то образом. Если бы возникло какое-либо исключение, я бы ожидал, что мы никогда не дойдем до третьей строки. Я не вижу способа, чтобы пользователь мог получить идентификатор guid, но сеанс не смог его получить. Другая возможность состоит в том, что строка 2 работала успешно, но переменная позже исчезла, чего я даже не представляю.
Кто-нибудь может подумать о чем-нибудь еще? Или, может быть, предложение о способе воспроизведения такой проблемы?
Подробнее:
ASP.NET v3.5
IIS 6
Нет Веб Садоводство
У нас запущена веб-ферма, но пользователи постоянно возвращаются на один и тот же сервер. Сейчас я исследую, могут ли пользователи ускользнуть на другой сервер.