2013-07-21 2 views
0

Почему это не работает? IIS убивает мое приложение в любом случае через 20 минутВыполнение веб-запроса для себя, периодически, чтобы предотвратить IIS от убийства приложения

protected void Application_Start() 
    { 
     Task.Factory.StartNew(() => DaemonStuff()); 
    } 

    private void DaemonStuff() 
    { 
     // Ping to self 
     MyWebRequest selfRequest = new MyWebRequest(MyURL, "GET"); 
     selfRequest.GetResponse(); 

     // Sleep 
     Thread.Sleep(1000 * 60 * 5); 

    } 

Что я делаю здесь, посетив мой собственный сайт (с WebRequest) каждые 5 минут.

Таким образом, IIS не должен думать, что мой сайт простаивает, потому что его посещают, но он все равно убивает приложение.

Итак: возможно ли поддельные посещения моего сайта каждые 5 минут, чтобы он не погиб?

+0

Я делаю что-то подобное (сценарий VB), но я делаю это каждые 60 секунд. Попробуй это? –

ответ

0

Проблема в том, что ASP.NET не знает о работе, выполненной в фоновом потоке, порожденном таймером или задачей. Он знает только о работе, связанной с запросом. ASP.NET просто не знает, какую работу вы выполняете, и это не помешает IIS/ASP.NET отключить ваш веб-сайт.

Более надежным решением является использование IRegisteredObject в качестве пояснения here.

Наконец, вы уверены, что верно MyURL? Для этого проверьте журналы IIS.

Наконец-то, возможно, лучшим решением является отключить тайм-аут простоя в IIS: просто измените «Idle Timeout» в дополнительных настройках пула.

+0

Уважение к вашему первому абзацу: работа, выполняемая этим таймером/задачей, - это посещение ... поэтому IIS или ASP.NET должны воспринимать это как обычный веб-клиент (например, браузер, открывающий сайт). Может быть, тайм-аут IIS без учета «местных посещений»? – sports

0

Код, который вы отправили, фактически называет DaemonStuff() только один раз. Затем этот метод спит и возвращается. Вы должны использовать таймер или что-то подобное, чтобы называть его повторно, если я не пропущу что-то в коде, который вы отправили.

+0

да код в примере отсутствует бесконечный цикл или таймер ... – sports

Смежные вопросы