Вариант 1 : самым чистым решением было бы написать приложение Windows, которое выполняет работу (вместо страницы aspx), и запланировать это приложение на сервере с помощью планировщика задач Windows. Это имеет несколько преимуществ перед подходом aspx:
- Вы можете использовать функции планировщика задач Windows (записи в журнале событий, если задача не может быть запущена, просмотреть время последнего запуска, запустить задачу в контексте определенного пользователя и т. Д.).
- Вам не нужно «симулировать» вызов браузера.
- Ваша страница не может быть «случайно» вызвана пользователем или поисковой системой.
- Это концептуально чище: главная цель веб-страницы - предоставить клиенту информацию, а не инициировать действие на сервере.
Конечно, есть и недостатки:
- У вас есть два проекта Visual Studio вместо одного.
- Возможно, вам придется включить общий код в общую библиотеку классов. (Это также можно рассматривать как преимущество.)
- Ваша система становится более сложной и, следовательно, потенциально сложной в обслуживании.
Вариант 2 : Если вам нужно придерживаться страницы aspx, возможно, самое простое решение - вызвать страницу через веб-клиент командной строки в запланированной задаче. Поскольку Windows не предоставляет никаких встроенных веб-клиентов командной строки, вам необходимо загрузить один из них, например wget
или curl
. Этот связанный вопрос SO содержит необходимый синтаксис командной строки: