Как стать автором
Обновить

Комментарии 14

Ммм ну ведь сервис такой будет работать как я понимаю только в трех случаях:

1. Произошел старт аппликации
2. Произошел запрос к сайту
3. Произошел выход из аппликации

И какой от него толк, когда от сервиса требуется как правило:

1. Работа по расписанию.
2. Постоянная работа.

Ваш пример можно укоротить вот так:

В Global.asax.cs внести

protected void Application_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Url.OriginalString != SecretPageURL)
{
new WebClient().DownloadData(SecretPageURL);
}
}

и все.

Если я что-то не понял разьясните.
1-3 + еще другие события глобал асах
Нет. Сервис как раз и будет работать каждый х минут. Еще раз, при старте кладем объект в кеш, говорим, сколько он будет жить и указываем хендлер, который дернется, когда объект истечет. Через х минут он истекает, хендлер дергается, внутри него мы процессим, что нужно, вызываем страничку, с помощью которой снова кладем объект в кеш, который истерет через х минут и все по-новой.
Хмм, понятно, извините чуток не разобрался…
Тогда проблема только в том, что сервис будет только жить если IIS запущена…
Не мешало бы оставить ссылку на CodeProject, где это было. Так все гораздо интереснее написано
а что мешает использовать обычный таймер, это было бы проще для поддержки и нагляднее. не будет подводных камней в виде запрета доступа к кешу из коллбека?

public class Global: HttpApplication {
private readonly System.Timers.Timer timerForDeleteFiles = new System.Timers.Timer();

protected void Application_Start(object sender, EventArgs e) {
timerForDeleteFiles.Enabled = true;
timerForDeleteFiles.Interval = 10000;
timerForDeleteFiles.Elapsed += timerForDeleteFiles_Elapsed;
}

protected static void timerForDeleteFiles_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
Files.deleteAll();
}
}
Хостеры убивают потоки через некоторое время
какие потоки?
Отправка почты или что-то лёгкое может делаться простым запуском статической функции в отдельном потоке.
А для чего-то, что работает по расписанию — сервисы не заменимы. Вдруг никто не приходит неделю, а запускать нужно каждый час?
www.codeproject.com/KB/aspnet/ASPNETService.aspx для этого тут написано, что запускать прикладу может поисковый робот, или

Another idea is to register your website to some traffic or availability monitoring services. There are lots of web services which keep an eye on your website and checks whether it is alive and the performance is satisfactory. All these services hit your web site pages and then collect the statistics. So, by registering in such services, you can guarantee your web application is alive all the time.
Вариант. Но на мой взгляд не трудно создать Windows Service (если, конечно, хостинг позволяет).
а какая разница — приходит кто-то или нет?
Идея заключается в том, чтобы при старте приложения положить в кеш некий объект...

Собственно, если никто не приходит — нет этого самого старта. Но это решается способами, которые описал выше Mr. Smerig.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории