Что может заставить приложение asp.net забыть пользователя?

У меня есть приложение asp.net, которое, похоже, забывает, что пользователь зашел через некоторое время.

Я использую поставщик членства, и когда вы выбираете "запомнить" журнал, он запоминает его во время сеанса. Я даже могу закрыть браузер, перезагрузить и вернуться, и он все равно будет зарегистрирован. Но через некоторое время он забывает и, похоже, делает это в любое старое время. Я когда-то вошел в систему, и когда я перешел на новую страницу, он вышел из системы.

Другие странные вещи:

  • На моей машине разработки он запоминает журнал навсегда. Даже после перезапуска и перекомпиляции IIS он запомнит мой логин, как ожидалось.
  • У меня есть другое приложение на том же сервере, которое действительно запомнит логин. Я сравнивал, как они обрабатывают логин, и они кажутся идентичными.

Это заставляет меня думать, что проблема имеет какое-то отношение к серверу или, возможно, что-то в приложении, прямо не связанное с кодом входа и членства. На что я могу смотреть?

Изменить: Посмотрел куки с помощью Fiddler, и они, похоже, в порядке. Созданный сегодня файл cookie Authentication истекает через 2 недели, так как моя конфигурация настроена: expires = Пн, 06-сент-2010 01:47:51 GMT

Изменить: Проблема заключается в том, что пул приложений перерабатывается, а cookie проверки подлинности становится недействительным, поскольку его больше нельзя читать по мере изменения машинного ключа. Решение заключалось в том, чтобы добавить сегмент machineKey в файл web.config и поставить статический ключ машины.

2 ответа

Существуют две основные возможности.

  • Срок действия файла cookie. Если файл cookie истекает/уходит, значит, вы считаетесь завершенным.

  • Недействительность файлов cookie. Файлы cookie для входа в систему шифруются на основе значения machineKey. Если вы не укажете machineKey, новый регенерируется каждый раз, когда пул приложений запускается (или перерабатывается). Это означает, что любой файл cookie, зашифрованный с помощью старого машинного ключа, теперь недействителен, и вы не будете считаться зарегистрированным.

Проверьте, какие настройки переустановки находятся в пуле приложений в IIS, и посмотрите, соответствует ли это тому, что вы не вошли в систему.


Функция "Запомнить меня" выполняется с помощью файлов cookie. Cookies могут быть установлены с датой истечения срока действия. Вам нужно посмотреть, как настроен файл cookie (Fiddler хорош для этого, вы можете проверить HTTP-заголовок, когда установлен файл cookie.)

licensed under cc by-sa 3.0 with attribution.