从Azure Web角色中,检查进程是否以辅助角色运行

时间:2014-06-25 02:04:13

标签: c# asp.net-mvc-4 azure azure-cloud-services

我正在尝试使用

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

从我的控制器中检查某个进程是否在我的辅助角色中运行。用于辅助角色的正确IPAddress是什么?使用输入Endpoit使用的IPAddress似乎不起作用。 有一个更好的方法吗?

2 个答案:

答案 0 :(得分: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。这是尝试的最短路径。也许甚至' localhost'会工作的。

然后,我不太详细地知道这一点,但是要在远程计算机上询问进程列表,这种方法需要在远程计算机上运行一些服务。因此可能需要打开防火墙端口或者需要在另一台计算机上运行某个恶魔。在远程计算机上询问进程列表将很快成为安全问题。

答案 1 :(得分:0)

我最终通过使用Azure存储表解决了这个问题。 我使用GetProcesssByName()在本地查询辅助角色,并将结果存储在Azure存储表中。我随后从Web角色访问此表以读取结果。 必须注意从存储表中删除旧条目,以便我们不要假设旧的(当前不存在的)进程仍在运行。