У меня есть классический ASP-сайт, который я поддерживаю, и недавно мы хотели сделать специальные действия по рендерингу, если посетитель пришел с одного определенного набора веб-сайтов. Таким образом, на странице, где эти посетители должны пройти, чтобы попасть на наш сайт, я поместил простую строку, устанавливающую переменную сеанса:
<!-- #include virtual="/clsdbAccess.cs"-->
<%
set db = new dbAccess
%>
<html>
<head>
...
<script language="javascript" type="text/javascript">
...
</script>
</head>
<body>
<%
Session("CAME_FROM_NEWSPAPER") = "your local newspaper"
...
%>
... html stuff ...
</body>
</html>
Затем, на всех следующих страницах, когда мне нужно создать навигационные ссылки, меню и т. Д., Которые мы не хотим показывать этим посетителям, я проверяю, является ли эта переменная сеанса "" или нет, затем отрендерить соответственно.
Моя проблема в том, что мне кажется, что это отлично работает для меня в процессе разработки, затем я запускаю его в производство, и иногда оно отлично работает, а в других случаях вообще не работает. Иногда переменная сеанса устанавливается, иногда нет. Все остальное прекрасно работает. Но наш клиент видит противоречивые результаты на страницах, представленных их посетителям, и это проблема. Я пробовал войти в систему с разных компьютеров и подтверждаю, что получаю разные и непредсказуемые результаты. Проблема в том, что я не могу воспроизвести его по своему желанию, и я не могу устранить неполадки / отследить производство.
Пока что я решил эту проблему, просто создав дубликаты страниц со специальным рендерингом и убедившись, что эти посетители идут туда. Но это взлом, и со временем его будет сложно поддерживать.
Есть ли что-то особенное или непоследовательное в переменных сеанса в Classic ASP? Есть ли лучший способ подойти к проблеме? ТИА.
Обновление
Я обнаружил, что при первом посещении сайта через эту страницу переменная сеанса НЕ устанавливается. Меню и все, что должно появиться в этих случаях, отображаются с первого раза. Затем, если вы вернетесь и обновите страницу входа, снова перейдите на ту же страницу, на этот раз это сработает, и после этого. Затем я пошел и удалил все мое кэширование, куки и т. Д. И снова зашел на страницу входа в систему, снова попал на мою страницу: Bam, меню (т.е. без переменной сеанса). Я создал страницу "sessionvars.asp", где я отображаю содержимое этой переменной и, конечно же, она пустая. По крайней мере, теперь, когда я могу воспроизвести проблему по своему желанию, я смогу продублировать ее на Dev и отследить ее.