2009-07-15 73 views
4

有人能給我一個用.NET技術實現日常工作的最佳方式。 我有一個asp.net應用程序與sqlserver數據庫託管在共享主機,GODaddy在我的實例。 我的應用程序用於添加/更改數據庫中當前表現相當公平的數據。 我收到了一個新的要求,每天根據存儲在數據庫中的一些數據標準發送一些電子郵件警報。在託管的Web服務器上安排工作

最初我想寫一個Windows服務,但是godaddy不允許訪問除託管應用程序以外的數據庫。 有人有任何想法每天凌晨1:00發送警報嗎?

在此先感謝

回答

5

參見Jeff Atwood的Easy Background Tasks in ASP.NET

複製/粘貼從鏈接:

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

我沒有使用GoDaddy的比域名註冊其他任何東西,所以我和你可以或不可以他們的主機平臺上做的沒有經驗。我也不知道他們的支持或知識基礎是什麼樣的,但我認爲你最好的選擇是向GoDaddy詢問他們推薦的內容。否則,您可能會繼續實施技術上可行的事情,但會被託管公司阻止。

如果它不是黃金時間的應用程序,快速而骯髒的做法是讓某種外部機器人調用服務器上的(安全)網頁來觸發通知過程。這不是一個真正的解決方案,但是如果這個網站只是你的一個愛好,它可以讓你找到主人允許的東西。

如果這個不符合您的要求,可能也是找到新主機的好時機。現在有很多好的ASP.NET主機可用。

0

您可以使用Web服務器中的Windows調度程序調度可以根據特定條件發送郵件的存儲過程調用。

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

參考文獻:

-1

二者必選其一System.Timers,的System.Threading創建在預定時間運行一個實例。讓該線程執行任何你想要的任務...確保代碼是線程安全的!

+0

什麼保證了應用程序域是在凌晨1:00運行?不會因爲沒有活動而被卸載? – 2009-07-16 00:08:07

+0

爲什麼要卸載線程?它在啓動時初始化並在後臺運行,直到檢查是否有任何要執行的任務?如果你不明白,那麼我對缺乏細節表示歉意 如果你注意到,我提出的建議基本上是他已經實施的 – 2009-07-17 02:48:50

0

許多託管服務提供商可以每X分鐘爲您請求一個URL。我不知道GoDaddy是否會這樣做,但如果是這樣,您可以創建一個ASMX頁面來啓動該作業,並告訴它們自動執行該頁面。

如果他們不這樣做,一個解決方案可能是在每個頁面請求的後臺線程中觸發該作業。如果你這樣做,請確保你輸入的代碼限制它運行每X分鐘或更多(可能使用靜態變量或數據庫表) - 讀取this story

0

如果您可以在承載應用程序和數據庫認證服務 - 當然,您可以使用憑據遠程訪問該服務,然後下載數據並以這種方式發送郵件。

這可能是一個作爲Windows服務編寫的自動化過程,在計劃程序下運行的應用程序或您在凌晨1:00推送的某個按鈕。你的選擇。

僅僅因爲應用程序是唯一可以訪問數據庫並不意味着您不能以其他方式公開數據。

相關問題