Недавно были проблемы с обновлением сервера с IIS 6 в Windows 2003 до IIS 7.5 в Windows 2008 R2 64 бит.
У нас есть ряд веб-сайтов, работающих на классическом ASP. Все сайты находятся под определенным сайтом, например www.example.com/foo и www.example.com/foobar.
В IIS 6 каждый сайт был настроен как виртуальный каталог, и все работало нормально. С момента перехода на новую настройку многие веб-сайты, похоже, имеют смешанные сеансы. Чтобы было ясно, это не проблема утилизации пула приложений; скорее сеансы заполняются информацией, когда пользователь попадает на сайт и во время просмотра он получает сеансы с разных сайтов.
Мы определили это на основе того, что несколько клиентов позвонили и сообщили, что в их корзине покупок есть товары с названиями товаров, принадлежащих другому сайту, а также наше собственное тестирование показало, что некоторые выполняемые запросы будут пытаться доставить товары с другого сайта. сайт
Мы пробовали - отключить динамическое кэширование - преобразовать каждый сайт в виртуальное приложение (если я правильно понимаю, концепции виртуального каталога / приложения были несколько изменены / уточнены в IIS 7, хотя, честно говоря, я не понимаю, в чем разница is) - различные изменения пула приложений (с использованием .NET 2 framework), классический и интегрированный режимы, изменение модели процесса на NetworkIdentity), все безрезультатно.
Единственное, чего мы не пробовали, - это изменить его для работы как 32-битное приложение.
Мы не используем файлы cookie только http, поэтому, когда я открываю браузер и набираю
document.cookie
в консоль разработчика в Firefox / Chrome / IE, что будет несколько значений ASPSESSIONID = ..., тогда как раньше я полагал, что было только одно.
Наконец, мы используем JScript на стороне сервера для классических страниц ASP, а не VBScript, поэтому у нас есть код, аналогичный приведенному ниже.
// учетная запись пользователя в виде объекта jscript Session ("user") = {email: "foo@foobar.com", id: 123};
и если мы выполним строку кода, как показано ниже:
Response.Write (typeof (Session ("пользователь")));
Когда все работает правильно, мы получаем «объект» - как и ожидалось. Когда сеанс удаляется, вывод становится «неизвестным», и мы также не можем получить доступ к полям в объекте JScript (например, полям .email или .id).
Очень признателен, если кто-нибудь может предоставить какие-либо указания о том, как решить эту проблему, все в Google, похоже, указывает на разные проблемы.
Это все еще звучит замечательно как проблема пула приложений / утилизации. Вы уверены, что действительно использовали файлы cookie ASPSESSIONID в IIS6, или существует специальное решение для управления сеансом с собственным файлом cookie?