2017-08-12 56 views
0

我想製作一個RESTful API(或者其他任何可以完成它的方法),讓它在循環中工作,以便每天執行指定的任務在同一個小時。向外部API發出請求並更新SQL Server數據庫的RESTful服務

具體而言,我希望它能夠在每天午夜訪問外部API,請求指定的數據並相應地更新數據庫。我知道如何向API發出請求並使其執行某些操作。但我希望它自動完成,所以我甚至不需要與它進行交互,甚至不必提出請求。

原因是我正在開發一個需要多個平臺的項目(並且即使只有一個平臺,用戶可能會有幾個平臺),我也無法向外部API發出請求(主要是因爲它是試用版,這是一個學校項目),每次用戶登錄或點擊每個平臺上的按鈕。

我不知道如何甚至可以做到這一點(或者甚至可能)與Web服務。我已經嘗試過使用BackgroundWorker進行異步處理的Web表單,但沒有任何結果。

我想我可能會有更好的運氣,更有經驗的人。

希望你能幫助我。

提前致謝, Fábio。

回答

0

感謝@Pedro Gaspar - LoboFX的幫助,我設法到了那裏。 我不希望Windows調度程序,因爲我希望它反映在代碼上,我不完全有權訪問它將在的服務器。也就是說,讓我有這樣的事情是這樣的:

private static string LigacaoBD="something"; 
    private static Perfil perfil = new Perfil(LigacaoBD); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     Task.Factory.StartNew(() => teste()); 

    } 

    private void teste() 
    { 

     bool verif = false; 

     while (true) 
     { 
      if (DateTime.UtcNow.Hour + 1 == 22 && DateTime.UtcNow.Minute == 12 && DateTime.UtcNow.Second == 0) 
       verif = false; 

      if (!verif) 
      { 
       int resposta = perfil.Guardar(DateTime.UtcNow.ToString()); 
       verif = true; 

      } 
      Thread.Sleep(1000); 
     } 
    } 

它通過類庫插入到數據庫中。通過這個循環,它保證它只插入一次(因此是bool),當它達到指定的小時,分​​鍾和秒鐘時,它會重置,允許它再次插入。如果發生服務器故障,當它恢復正常時,它仍會插入。唯一的問題是,如果它已經插入並且服務器關閉,它將再次插入。但爲此,有存儲過程。那麼,不是爲DateTime.UtcNow.ToString(),但這只是一個測試。

1

不知道我是否正確,但在我看來,最簡單的方法來做你想做的事(有一個程序計劃在特定的時間,每天工作)是使用Windows調度程序來調度您的應用程序始終在您想要的特定時間運行。

+0

嗨,Windows調度可能不是我要找的,因爲我需要的API /網站/無論在服務器上,我不完全有權訪問它。但我設法去了那裏。謝謝。 :) – taiko

相關問題