У меня есть некоторый код, который я записал только что: text2num. Это делает часть из того, что Вы хотите, кроме него не обрабатывает порядковые числа. Я на самом деле не использовал этот код ни для чего, таким образом, он в основном не тестируется!
Файл cookie аутентификации зашифрован с помощью machineKey
значение из локального web.config
или глобального machine.config
.Если такой ключ не задан явно , ключ будет автоматически сгенерирован, но не сохраняется на диске - следовательно, он будет изменяться всякий раз, когда приложение перезапускается или «перерабатывается» из-за неактивности, и новый ключ будет создан при следующем ударе.
Устранить проблему так же просто, как добавить раздел конфигурации
в web.config
или, возможно (предпочтительно?) В machine.config
] на сервере (непроверено):
<system.web>
...
<machineKey
validationKey="..."
decryptionKey="..."
validation="SHA1"
decryption="AES"/>
...
</system.web>
Google генерирует случайный машинный ключ для сайтов, которые могут сгенерировать этот раздел для вас. Если ваше приложение имеет дело с конфиденциальной информацией, вы можете создать ключи самостоятельно.
Насколько я понимаю, срок действия cookie истекает потребляющей стороной - браузер, а это означает, что IIS не имеет права голоса в этом
Прежде всего, я должен сказать, что эти «рекомендации» являются общими, а не iis -7 эксклюзив.
В web.config в разделе
у вас либо есть
(что требует, чтобы служба сервера состояния сеанса ASP.NET работала на localhost)
или
.
Основное отличие состоит в том, что в InProc данные о состоянии сеанса помещаются в сам процесс приложения. В другом случае хранилище выполняет другая служба, а ваше приложение просто опрашивает ее, чтобы получить необходимые данные.
При использовании обоих (а также режима состояния сеанса sql-server) InProc является наименее надежным, но самым быстрым. Sql-сервер является самым надежным и самым медленным, а режим StateServer находится где-то посередине и ненадежен только в случае сбоя питания / системы. Сказав это, я должен сказать, что для сайта с малым количеством запросов снижение производительности незначительно.
Мой опыт показал, что стабильность работы InProc весьма непредсказуема; У меня с тобой была такая же проблема. Мне удалось увеличить стабильность приложения, настроив параметры пула приложений, я полностью устранил проблему, переключившись на SessionState (что также позволяет отключить приложение и не потерять данные о состоянии сеанса).
Причины что вы можете пострадать от стабильности приложения / сеанса:
IIS и пулы приложений. Каждый виртуальный каталог веб-сайта назначается пулу приложений (по умолчанию «DefaultAppPool»), который имеет ряд настроек, среди которых вы определяете интервал «повторного использования» процесса - и таким образом сохраняете системные ресурсы. Если вы не измените настройки, приложение может вызвать один из критериев для утилизации процесса, что означает, что ваше приложение заблокировано
Антивирус. В приложении ASP.NET при касании файла web.config (и любых дочерних файлов .config, от которых зависит приложение) приложение перезапускается. Теперь бывают случаи, когда антивирусная программа может касаться файла web.config (скажем, раз в день?), В результате чего приложение перезапускается, а данные сеанса теряются.
Неверная конфигурация В частности, для проверки подлинности с помощью форм настройки и поведение, связанные со временем, всегда зависят от веб-сеанса, при этом сеанс аутентификации находится под веб-сеансом.
Я не знаю, зависит ли модуль проверки подлинности с помощью форм только от домена сеанса или он также помещает данные в домен приложения. Во втором случае вам, возможно, придется отключить все настройки повторного использования в пуле приложений, а также повторно проверить конфигурацию / антивирус и указать, кто хранит данные сеанса.
Установить состояние сеанса, настроенное в IIS, как В процессе Использовать файлы cookie Тайм-аут = ваше необходимое время Использовать идентификацию хостинга для олицетворения
Также установите для EnableSessionState значение true (что тоже по умолчанию)
И, самое главное, запустите пул приложений в классическом режиме.
Надеюсь, ваша проблема решит.
Недавно у меня была такая же проблема, когда мой сайт был тайм-аут каждые 20 минут, хотя я установил тайм-аут сеанса на 2 часа. Я обнаружил, что это произошло потому, что рабочий процесс IIS отключался каждые 20 минут: http://technet.microsoft.com/en-us/library/cc783089 (WS.10) .aspx