我正在尝试使用
Process[] processes = Process.GetProcessesByName(processName, workerRoleIPAddress);
从我的控制器检查某个进程是否在我的工作角色中运行。用于辅助角色的正确 IPAddress 是什么?使用输入端点使用的 IPAddress 似乎不起作用。有一个更好的方法吗?
我正在尝试使用
Process[] processes = Process.GetProcessesByName(processName, workerRoleIPAddress);
从我的控制器检查某个进程是否在我的工作角色中运行。用于辅助角色的正确 IPAddress 是什么?使用输入端点使用的 IPAddress 似乎不起作用。有一个更好的方法吗?
我最终通过使用 Azure 存储表解决了这个问题。我使用 GetProcesssByName() 在本地查询了工作角色,并将结果存储在 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。这是最短的尝试方法。也许甚至“本地主机”也会起作用。
然后,我不知道这个确切的细节,但是要询问远程计算机上的进程列表,这种方法将需要在远程计算机上运行一些服务。因此,可能需要打开防火墙端口,或者需要在另一台计算机上运行某个恶魔。询问远程计算机上的进程列表将很快成为一个安全问题。