Asp.net Состояние приложения истекает - PullRequest
2 голосов
/ 01 января 2012

Я полагаю, что состояние приложения и состояние сеанса - это две разные вещи.

Если я могу установить время истечения в состояние сеанса, могу ли я сделать то же самое для состояния приложения в моем файле web.config?

Я просто хочу запретить перестройку приложения через 5 минут.

Я не знаю точно, что происходит.При первом доступе к сайту, его отображение занимает 10 секунд.Если я вернусь на сайт раньше, чем через 5 минут, сайт появится сразу.Если при повторном доступе к сайту более 5 минут неактивности, сайт занимает 10 секунд.Я думаю, это было состояние приложения Кто истек?

Ответы [ 4 ]

2 голосов
/ 01 января 2012

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

Если нет, то есть способы обмануть систему. Вы можете создать элемент кэша, и по истечении этого срока создать элемент кэша. Это будет постоянно запускать код каждые X минут, что будет поддерживать работу приложения. Проблема заключается в том, что если приложение когда-либо умрет (перезагрузка сервера, перезапуск IIS и т. Д.), Приложение будет мертвым, пока кто-то не сделает реальный запрос, и в этот момент оно снова будет жить неопределенно долго.

Этот метод иногда используется для имитации планировщика задач в ASP.NET. Просто имейте в виду, что это не идеально.

РЕДАКТИРОВАТЬ : Для пояснения, вы не просто создадите новый элемент кэша, вы на самом деле сделаете запрос к странице, которая затем, в свою очередь, создаст элемент кэша. Это гарантирует, что другой запрос будет сделан через IIS, который, в свою очередь, запускает полный жизненный цикл, поддерживая приложение в рабочем состоянии.

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

0 голосов
/ 06 мая 2015

Не уверен, что это все еще актуально.

Проблема не связана с SessionState или ApplicationState.

Чтобы избежать медленной реакции вашего сайта, вы должны активировать AlwaysRunning режим вашего IIS Для этого добавьте в ваш web.config следующий

<applicationPools> 
    <add name="MyAppWorkerProcess" startMode="AlwaysRunning" /> 
</applicationPools>
0 голосов
/ 02 января 2012

Вы можете настроить состояние сеанса в файле конфигурации для предотвращения этого срока. Например:

<sessionState 
            mode="SQLServer"
            sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
            cookieless="false" 
            timeout="20" 
    />
0 голосов
/ 01 января 2012

Состояние приложения начинается при создании первого сеанса и автоматически завершается после истечения последнего сеанса. Пока вы продолжаете доступ к веб-сайту, приложение будет оставаться активным.

Я не знаю, что вы имеете в виду, имея в виду "перестройку" приложения. Изменение любого связанного файла (то есть файла с компилируемым кодом) приведет к перекомпиляции приложения (если у вас есть веб-каталог) или перезагрузке (если у вас есть веб-приложение). Это действие всегда завершает все сеансы и завершает приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...