Asp.net формирует cookie аутентификации, не удостаивающий тайм-аут IIS7

У меня есть некоторый код, который я записал только что: text2num. Это делает часть из того, что Вы хотите, кроме него не обрабатывает порядковые числа. Я на самом деле не использовал этот код ни для чего, таким образом, он в основном не тестируется!

23
задан Jim Geurts 19 November 2009 в 02:35
поделиться

5 ответов

Файл cookie аутентификации зашифрован с помощью machineKey значение из локального web.config или глобального machine.config .Если такой ключ не задан явно , ключ будет автоматически сгенерирован, но не сохраняется на диске - следовательно, он будет изменяться всякий раз, когда приложение перезапускается или «перерабатывается» из-за неактивности, и новый ключ будет создан при следующем ударе.

Устранить проблему так же просто, как добавить раздел конфигурации в web.config или, возможно (предпочтительно?) В machine.config ] на сервере (непроверено):

<system.web>
  ...
  <machineKey 
    validationKey="..."
    decryptionKey="..."
    validation="SHA1"
    decryption="AES"/>
  ...
</system.web>

Google генерирует случайный машинный ключ для сайтов, которые могут сгенерировать этот раздел для вас. Если ваше приложение имеет дело с конфиденциальной информацией, вы можете создать ключи самостоятельно.

40
ответ дан 29 November 2019 в 02:04
поделиться

Насколько я понимаю, срок действия cookie истекает потребляющей стороной - браузер, а это означает, что IIS не имеет права голоса в этом

0
ответ дан 29 November 2019 в 02:04
поделиться

Прежде всего, я должен сказать, что эти «рекомендации» являются общими, а не iis -7 эксклюзив. В web.config в разделе у вас либо есть (что требует, чтобы служба сервера состояния сеанса ASP.NET работала на localhost) или . Основное отличие состоит в том, что в InProc данные о состоянии сеанса помещаются в сам процесс приложения. В другом случае хранилище выполняет другая служба, а ваше приложение просто опрашивает ее, чтобы получить необходимые данные. При использовании обоих (а также режима состояния сеанса sql-server) InProc является наименее надежным, но самым быстрым. Sql-сервер является самым надежным и самым медленным, а режим StateServer находится где-то посередине и ненадежен только в случае сбоя питания / системы. Сказав это, я должен сказать, что для сайта с малым количеством запросов снижение производительности незначительно.

Мой опыт показал, что стабильность работы InProc весьма непредсказуема; У меня с тобой была такая же проблема. Мне удалось увеличить стабильность приложения, настроив параметры пула приложений, я полностью устранил проблему, переключившись на SessionState (что также позволяет отключить приложение и не потерять данные о состоянии сеанса).

Причины что вы можете пострадать от стабильности приложения / сеанса:

  1. IIS и пулы приложений. Каждый виртуальный каталог веб-сайта назначается пулу приложений (по умолчанию «DefaultAppPool»), который имеет ряд настроек, среди которых вы определяете интервал «повторного использования» процесса - и таким образом сохраняете системные ресурсы. Если вы не измените настройки, приложение может вызвать один из критериев для утилизации процесса, что означает, что ваше приложение заблокировано

  2. Антивирус. В приложении ASP.NET при касании файла web.config (и любых дочерних файлов .config, от которых зависит приложение) приложение перезапускается. Теперь бывают случаи, когда антивирусная программа может касаться файла web.config (скажем, раз в день?), В результате чего приложение перезапускается, а данные сеанса теряются.

  3. Неверная конфигурация В частности, для проверки подлинности с помощью форм настройки и поведение, связанные со временем, всегда зависят от веб-сеанса, при этом сеанс аутентификации находится под веб-сеансом.

Я не знаю, зависит ли модуль проверки подлинности с помощью форм только от домена сеанса или он также помещает данные в домен приложения. Во втором случае вам, возможно, придется отключить все настройки повторного использования в пуле приложений, а также повторно проверить конфигурацию / антивирус и указать, кто хранит данные сеанса.

0
ответ дан 29 November 2019 в 02:04
поделиться

Установить состояние сеанса, настроенное в IIS, как В процессе Использовать файлы cookie Тайм-аут = ваше необходимое время Использовать идентификацию хостинга для олицетворения

Также установите для EnableSessionState значение true (что тоже по умолчанию)

И, самое главное, запустите пул приложений в классическом режиме.

Надеюсь, ваша проблема решит.

0
ответ дан 29 November 2019 в 02:04
поделиться

Недавно у меня была такая же проблема, когда мой сайт был тайм-аут каждые 20 минут, хотя я установил тайм-аут сеанса на 2 часа. Я обнаружил, что это произошло потому, что рабочий процесс IIS отключался каждые 20 минут: http://technet.microsoft.com/en-us/library/cc783089 (WS.10) .aspx

0
ответ дан 29 November 2019 в 02:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: