По разным причинам я сыт по горло состоянием сеанса ASP.NET, и я пытаюсь сделать это самостоятельно (вскоре появится отдельный вопрос, связанный с тем, почему я сыт по горло и возможно ли это сделать самостоятельно, но сейчас давайте предположим, что это так).
За исключением вопросов безопасности, похоже, что отслеживание сеансов включает в себя немного больше, чем сохранение cookie с guid и связывание этого guid с небольшой таблицей "session" в базе данных, которая имеет ключ к guid и содержит небольшое количество полей. для отслеживания времени ожидания и ссылки на первичный ключ в таблице пользователя для тех сеансов, которые связаны с зарегистрированными пользователями.
Но я застрял на детали с куки, в случае, если браузер пользователя не настроен на прием куки. Мне кажется, что каждый раз, когда пользователь получает доступ к любой странице, на которой включено состояние сеанса, ASP.NET должен определить, поддерживает ли браузер файлы cookie. Если cookie-файл сеанса уже отправлен вместе с запросом, очевидно, он знает, что cookie-файлы приняты.
Если нет, похоже, что нужно проверить, что, как я понимаю, включает в себя попытку записи файла cookie и перенаправление на страницу, которая пытается прочитать файл cookie. Таким образом, когда пользователь с отключенными файлами cookie посещает несколько страниц сайта, ASP.NET
(a) должен выполнять этот тест в оба конца для каждой страницы, которую посещает пользователь, или
(b) должен предположить, что браузер принимает файлы cookie и создать запись с (предварительным) идентификатором сеанса для пользователя на каждой странице - и, если предполагается, что состояние сеанса является постоянным, кажется, что он должен записать этот начальный идентификатор сессии в базе данных на каждой странице.
Но (а) звучит безумно и (б) тоже звучит безумно, поскольку мы быстро накапливали идентификаторы сеансов для всех этих одностраничных сеансов. Поэтому я думаю, что должен быть какой-то другой трюк / эвристика, который используется, чтобы знать, когда нужно выполнить тест туда и обратно, и / или когда действительно создать запись для сеанса.
Я ошибаюсь, что меня озадачило?
(Для ясности, я не говорю о реализации пользовательского решения для хранения в подключаемой системе состояний сеансов ASP.NET. Я говорю о том, чтобы полностью пропустить систему состояний сеансов ASP.NET. вот этот: Реализация собственного управления сеансами в ASP.NET .)