Запланируйте работу на размещенном веб-сервере - PullRequest
4 голосов
/ 16 июля 2009

Может кто-нибудь дать мне лучший способ для выполнения повседневной работы с технологией .NET. У меня есть приложение asp.net с базой данных sqlserver, размещенной на виртуальном хостинге, в моем случае это GODaddy. Мое приложение используется для добавления / изменения данных в базе данных, которая в настоящее время работает довольно честно. Я получил новое требование ежедневно отправлять уведомления по электронной почте на основе некоторых критериев данных, которые хранились в базе данных.

Изначально я думал написать службу Windows, но Godaddy не позволяет получить доступ к базе данных, кроме ее размещенных приложений. Есть ли у кого-нибудь идеи отправлять оповещения ежедневно в 1:00 ??1003*

Заранее спасибо

Ответы [ 6 ]

5 голосов
/ 16 июля 2009

См. Простые фоновые задачи в ASP.NET . Автор Jeff Atwood.

Копирование / вставка по ссылке:

private static CacheItemRemovedCallback OnCacheRemove = null;

protected void Application_Start(object sender, EventArgs e)
{
    AddTask("DoStuff", 60);
}

private void AddTask(string name, int seconds)
{
    OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
    HttpRuntime.Cache.Insert(name, seconds, null,
        DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
        CacheItemPriority.NotRemovable, OnCacheRemove);
}

public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
    // do stuff here if it matches our taskname, like WebRequest
    // re-add our task so it recurs
    AddTask(k, Convert.ToInt32(v));
}
0 голосов
/ 16 июля 2009

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

Это может быть автоматизированный процесс, написанный как служба Windows, приложение, которое запускается под планировщиком, или какая-то кнопка, которую вы нажимаете в 1:00. Ваш выбор.

То, что приложение - это единственная вещь, которая может получить доступ к базе данных, не означает, что вы не можете предоставить данные другим способом.

0 голосов
/ 16 июля 2009

Многие провайдеры хостинга могут запрашивать URL для вас каждые X минут. Я не знаю, работает ли GoDaddy, но если это так, вы могли бы создать страницу ASMX, которая запускает задание, и сказать им, чтобы она выполнялась автоматически.

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

0 голосов
/ 16 июля 2009

Используйте либо System.Timers, System.Threading, чтобы создать экземпляр, который запускается в заданное время. Пусть этот поток выполнит любую задачу, которую вы хотите ... Убедитесь, что код является потокобезопасным!

0 голосов
/ 16 июля 2009

Вы можете использовать планировщик Windows с веб-сервера для планирования вызова хранимой процедуры, которая может отправлять почту на основе определенных критериев.

osql.exe -S servername -d database -U username -P password -Q "EXEC spAlertOnCriteria"

Ссылки:

0 голосов
/ 16 июля 2009

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

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

Может быть, это хорошее время для поиска нового хоста, если он не соответствует вашим требованиям. В наши дни доступно много хороших хостов ASP.NET.

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