我正在使用ASP.NET構建一個新聞網站。我希望通過拉動新的新聞文章來自動更新它。這是通過調用一個下載更新的json字符串的函數來完成的。通過調用函數自動更新網站
如何在C#中每半小時調用一次該函數? 或者我應該用JavaScript編寫這個函數,並且每半個小時調用一次?
我正在使用ASP.NET構建一個新聞網站。我希望通過拉動新的新聞文章來自動更新它。這是通過調用一個下載更新的json字符串的函數來完成的。通過調用函數自動更新網站
如何在C#中每半小時調用一次該函數? 或者我應該用JavaScript編寫這個函數,並且每半個小時調用一次?
按定義網站沒有時間觸發器。每個請求都是獨立的,服務器可以在請求前處於「睡眠」模式。
但是你描述的問題很常見。
有一些方法來解決這個問題:
如果我使用javascript在C#中調用我的函數,即使網站未打開,它是否會調用該函數?在後臺? 所以當我打開網站(比方說30分鐘後),我會查看更新內容? – ashish1512
使用在head標籤分離刷新頁面,
<meta http-equiv="refresh" content="value">
這裏是秒。如果您想在30分鐘後刷新頁面,請使用1800作爲值。
可以在C#
protected void Page_Load(object sender, EventArgs e)
{
// Create a timer
System.Timers.Timer myTimer = new System.Timers.Timer();
//call method
myTimer.Elapsed += new ElapsedEventHandler(mymethod);
//time interval 5 sec
myTimer.Interval = 5000;
myTimer.Enabled = true;
}
public void mymethod(object source, ElapsedEventArgs e)
{
//your code
}
還可以使用定時器,你可以使用setTimeout函數在Javascript
setTimeout(function() {
//calls click event after a certain time
that.element.click();
}, 5000);
OR
使用任務此
Task.Factory.StartNew(() =>
{
System.Threading.Thread.Sleep(5000);
CallMethod();
});
即使在網站未打開的情況下,這項工作還會繼續嗎? 它會在後臺調用函數嗎? 我在GoDaddy託管網站。 – ashish1512
你的意思是網站是不是開放的?從你在哪裏拉消息?從另一個網站或從數據庫? – user2148124
使用Timer而不是線程。 – user2148124
您可以將您的網站的數據源設置爲靜態文件或數據庫等Json/XML 。
創建一個計劃程序,該計劃程序將在您獲取Json 字符串的特定位置以特定的 間隔尋找新數據。
您的調度會更新,這將更新您的新聞
您應該爲此創建一個Windows服務中的數據源。因爲即使您的網站頁面未打開,它仍會在後臺運行。
否則
使用微軟Azure,它會幫助你創建你的調度功能,將繼續不斷更新你的網站內容。
您可以爲此生成cron作業。 – lalitpatadiya
你可以看看'SignalR'(http://www.asp.net/signalr) –