Рейтинг:
2
Jacob Himes
То, что вам нужно реализовать, называется веб-заданием (cron job in Go Daddy). Однако я не уверен, что Go Daddy разрешает задания на основе exe.
Планирование задач с помощью Plesk Shared Hosting | Windows Hosting (Plesk) - справка GoDaddy[^]
Я настоятельно рекомендую использовать облачный сервис, который больше подходит для приложений на базе .Net, таких как Azure. С помощью Azure вы можете запланировать запуск exe-файла с заданным интервалом, а также просто загрузить этот exe-файл, и он будет использовать те же параметры конфигурации приложения, что и ваш веб-сайт. Это будет стоить немного больше, чем GoDaddy, но вы получите гораздо больше возможностей, и все будет вручено вам на серебряном блюде.
Когда вы делаете это веб-задание, не создавайте службу windows, создайте консольное приложение.
Удачи!
Ссылка на azure
Microsoft Azure: Платформа Облачных Вычислений[^]
Sergey Alexandrovich Kryukov
Это действительно полезная информация и может быть даже то, что нужно исследователю. Но для начала было бы важно отбросить неправильное представление исследователя о "выполнении формы".
Кстати, почему именно консольное приложение? И как бы вы предотвратили его запуск несколько раз? Просто спрашиваю...
—СА
Jacob Himes
Да, вы совершенно правы, это заблуждение необходимо устранить. На самом деле я все еще не уверен, встретил ли клиент веб-форму или форму windows, так как позже в этом вопросе он упоминает, что пытался написать службу windows. Это распространенное заблуждение начинающих создавать пустую форму windows для выполнения задачи, которая не требует взаимодействия с пользователем.
Консольные приложения отлично подходят для веб-заданий и рекомендуются вместе с файлами bat и другими типами файлов сценариев. Веб-задание управляет временем жизни приложения. Он запускает консольное приложение...ждет его завершения, а затем не будет запускать его снова до следующего запланированного времени. Консольные приложения, если они написаны правильно, закрываются после завершения выполнения. Если требуется непрерывное задание, консольное приложение записывается в виде бесконечного цикла. Кроме того, все выходные данные приложения хранятся в облачном журнале. Это стандартно для облачных решений, таких как Azure, BlueMix и Amazon.
Вот ссылка на то, как работает веб-задание в Azure.
https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/
Sergey Alexandrovich Kryukov
Правильно, просьба совершенно непонятная. Я все еще думаю, что ваша информация может быть очень полезной, просто не совсем уверен, что она уместна в данном конкретном случае.
Я все еще сомневаюсь в этих консольных приложениях. С чего их начинать, когда, на каком мероприятии? С сервисом Windows все более понятно; они могут автоматически запускаться... Я имею в виду, что если по какой-то причине какой-то HTTP-запрос запускает консольное приложение, то многие из них могут быть запущены. Конечно, я понимаю, как создать приложение с одним экземпляром; проблема заключается в самом принципе.
—СА
Jacob Himes
Управление консольным приложением не заботится о пользовательской реализации. Консольное приложение запускается запланированной задачей, как в это время суток, а не http-запросом или запросом, выполняемым по расписанию. Это почти то же самое, что запланировать запуск программы на локальном компьютере с Windows в определенное время суток. Он выполняется тканью облачной среды PaaS. Служба Windows-это не вариант, если у вас нет виртуальной машины, которая стоит еще несколько долларов, у OP есть общий веб-экземпляр, они не запускают службы windows.
Конечно, я могу неправильно понять вопрос опа в том смысле, что он хочет, чтобы эта задача выполнялась каждый раз, когда создается запись, но он сказал "расписание", затем "задача", а затем упомянул, что он не может сделать это в экземпляре общего хостинга через службу windows, так что здесь я нахожусь во власти контекстных подсказок.
К вашему сведению, я полностью согласен с вами в том, что вызов нового консольного процесса никогда не должен быть в конце http-вызова без состояния.
Sergey Alexandrovich Kryukov
Ах, теперь я понимаю, что вы имели в виду, спасибо. Но тогда это может быть не консольное приложение, а приложение без каких-либо консолей и каких-либо окон. Формально говоря, это "оконное приложение". Модель разработки Microsoft, особенно в .NET или просто в Visual Studuo, очень запутанна. Они предлагают типы приложений " консольные "и" оконные приложения", но на самом деле таких вещей нет. Эти параметры на самом деле являются "показать консоль" и "не показывать консоль", без чего-либо вроде "приложения Windows". На стороне сервера я вообще не вижу смысла что-либо показывать. На эту консоль некому смотреть. :-)
Выход может быть просто протоколированием.
—СА
Jacob Himes
Очень верно, его раздражает номенклатура мира Дэв.