2013-09-25 36 views
2

我想看看我是否可以從asp.net-mvc網站管理一堆windows計劃任務(設置新任務,更新現有任務的頻率等),因爲我們希望允許非技術用戶更新此信息(所以我們想避免人們直接登錄到網絡服務器等)是否可以通過asp.net-mvc網站或其他遠程選項管理Windows調度程序?

我看到你可以從一般的C#做到這一點(下面的鏈接),但不確定權利等,這將使它有可能管理通過web應用程序。

如果它無法從網絡,是否有其他「遠程」選項,以便人們可以做到這一點沒有要在特定的盒子?

回答

8

是的,你可以只使用它可以在C中發現的taskschd.dll:\ WINDOWS \ Syswow64資料\ 只是參考,爲您的Web應用程序,並使用它像這樣

using TaskScheduler; 

namespace Test 
{ 
    public class Class1 
    { 
     public void Test() 
     { 
      var taskService = new TaskScheduler.TaskScheduler(); 
      taskService.Connect(); 

      var rootFolder = taskService.GetFolder(@"\"); 

      var registeredTasks = rootFolder.GetTasks(0); 
      foreach (var registeredTask in registeredTasks) 
      { 

      } 
     } 
    } 
} 

要證明給你看它跑這裏是運行代碼的截圖從網頁

enter image description here

叫你可以從我的機器上看到我一把抓起我的任務調度5個項目。

BTW我爲您創建了整篇文章在我的博客上如何:

  1. 獲取所有調度的任務
  2. 創建/更新計劃任務
  3. 刪除計劃任務

在這裏http://macaalay.com/2013/10/02/programmatic-management-of-scheduled-task/

1

我寧願使用Quartz.net,它對我來說看起來更加靈活,而不是Windows任務調度程序,但這個想法可以適用於這兩種調度程序。請看下面的案例來獲得這個想法,也許這可以幫助你:

  • 創建一個WCF
  • 從你的ASP淨MVC應用程序消耗WCF服務
  • 的WCF將有方法去執行公共操作,如添加和刪除任務任務爲
  • 存儲信息持久性存儲(db,no-sql,xml等)或通過您的緩存存儲
  • 你必須有一個JOB(石英),讀取數據庫並創建任務到Windows中,這項工作可以運行每隔x分鐘或y小時
  • 使用信息和執行FIFO操作
  • 創建形式在你的ASP淨應用程序爲用戶輸入的任務和形式將信息發送到您的WCF服務

編輯: 你必須記住以下幾點: 一個WCF會給你狀態你需要有一個「狀態」來處理Web應用程序任務,石英可以處理作業以讀取數據庫並設置新的任務(石英或windows sche duler),而Web表單只是處理這些操作的前端。

建立在石英工作couls那麼容易,因爲:

public class ReadDBJob : IJob 
{ 
    public void Execute(IJobExecutionContext context) 
    { 
     // Do your work to read the database 
     // and create the tasks that you need 

    } 
} 
相關問題