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

本文关键字:角色 是否 进程 运行 检查 Azure Web | 更新日期: 2023-09-27 18:10:13

我正在尝试使用

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

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

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

不强制使用第二个参数。有两种方法签名:

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'也能工作。

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

我最终通过使用Azure Storage表解决了这个问题。我使用GetProcesssByName()在本地查询worker角色,并将结果存储在Azure Storage表中。随后,我从web角色访问了这个表来读取结果。必须小心从存储表中删除旧的条目,这样我们就不会假设旧的(当前不存在的)进程仍在运行。