2016-03-07 58 views
2

我正在使用ASP.NET構建一個新聞網站。我希望通過拉動新的新聞文章來自動更新它。這是通過調用一個下載更新的json字符串的函數來完成的。通過調用函數自動更新網站

如何在C#中每半小時調用一次該函數? 或者我應該用JavaScript編寫這個函數,並且每半個小時調用一次?

+0

您可以爲此生成cron作業。 – lalitpatadiya

+0

你可以看看'SignalR'(http://www.asp.net/signalr) –

回答

0

按定義網站沒有時間觸發器。每個請求都是獨立的,服務器可以在請求前處於「睡眠」模式。

但是你描述的問題很常見。

有一些方法來解決這個問題:

  1. 哈克方法:已經打開的頁面和一些JavaScript使每XX分鐘/秒的通話
  2. 如果你使用微軟的Azure,您可以使用網上工作未來(免費)​​或調度程序功能(免費用於5次操作)
  3. 您可以開發一個Windows服務女巫將每XX分鐘呼叫您的網站。執行框架(免費)是Quartz。你需要在主機「永遠在線」的Windows PC該服務,從您的網站下方
+0

如果我使用javascript在C#中調用我的函數,即使網站未打開,它是否會調用該函數?在後臺? 所以當我打開網站(比方說30分鐘後),我會查看更新內容? – ashish1512

1

使用在head標籤分離刷新頁面,

<meta http-equiv="refresh" content="value"> 

這裏是秒。如果您想在30分鐘後刷新頁面,請使用1800作爲值。

2

可以在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(); 
    }); 
+0

即使在網站未打開的情況下,這項工作還會繼續嗎? 它會在後臺調用函數嗎? 我在GoDaddy託管網站。 – ashish1512

+0

你的意思是網站是不是開放的?從你在哪裏拉消息?從另一個網站或從數據庫? – user2148124

+0

使用Timer而不是線程。 – user2148124

1
  1. 您可以將您的網站的數據源設置爲靜態文件或數據庫等Json/XML 。

  2. 創建一個計劃程序,該計劃程序將在您獲取Json 字符串的特定位置以特定的 間隔尋找新數據。

  3. 您的調度會更新,這將更新您的新聞

0

您應該爲此創建一個Windows服務中的數據源。因爲即使您的網站頁面未打開,它仍會在後臺運行。

否則

使用微軟Azure,它會幫助你創建你的調度功能,將繼續不斷更新你的網站內容。