2014-06-25 63 views
1

運行我試圖使用從Azure的Web角色,檢查某個進程在輔助角色

Process[] processes = Process.GetProcessesByName(processName, workerRoleIPAddress); 

從我控制器檢查,如果某個進程在我的工人角色上運行。什麼是用於輔助角色的正確IP地址?使用輸入Endpoitns使用的IPAddress似乎不起作用。 有沒有更好的方法來做到這一點?

回答

0

我最終通過使用Azure存儲表解決了這個問題。 我使用GetProcesssByName()在本地查詢worker角色並將結果存儲在Azure存儲表中。我隨後從Web角色訪問此表以讀取結果。 必須注意從存儲表中刪除較舊的條目,所以我們不要假設舊的(當前不存在的)進程仍在運行。

0

你不是被迫使用第二個參數。有兩個方法簽名:

http://msdn.microsoft.com/en-us/library/System.Diagnostics.Process.GetProcessesByName(v=vs.71).aspx

  • public static Process[] GetProcessesByName(string);
  • public static Process[] GetProcessesByName(string, string);

我建議你嘗試得到明確與第一種方法的簽名。之後,嘗試使用IP地址。

我會先嚐試127.0.0.1。這是最短的嘗試方法。也許即使'本地主機'將工作。然後,我不清楚這個確切的詳細信息,但要問遠程計算機上的進程列表,這種方法需要一些遠程計算機上運行的服務。因此可能需要打開防火牆端口或者需要在另一臺計算機上運行某個惡魔。在遠程計算機上詢問進程列表很快就會成爲安全問題。