如何获取属于特定会话的进程?

时间:2010-12-09 07:12:19

标签: c# asp.net session process

我希望获得针对特定会话的所有流程。 即如果有两个人正在使用我的Web应用程序,那么我想获得user1使用的所有进程以及user2使用的所有进程。

I can get all processes by writing Process.GetProcesses() but how to get it in a group.
e.g:

User1:  Process342
User1:  Process151
User2:  Process452
User2:  Process674
User2:  Process111

任何人都可以帮忙。

2 个答案:

答案 0 :(得分:0)

你需要了解ASP.NET& IIS协同工作 - 这些文章可能有所帮助:

  1. http://www.code-magazine.com/Article.aspx?quickid=0511061
  2. http://dotnetslackers.com/articles/iis/ASPNETInternalsIISAndTheProcessModel.aspx
  3. http://msdn.microsoft.com/hi-in/magazine/cc188942(en-us).aspx
  4. 现在回答您的具体问题,ASP.NET运行时将托管在IIS工作进程中。 Session只是从浏览器中识别用户会话的逻辑范围,ASP.NET提供了一个状态包来存储会话特定值。所有用户(会话)都由相同(一组)工作进程提供服务 - 因此每个会话查找进程没有任何意义。您所能做的就是找出在Web服务器上执行的进程。

答案 1 :(得分:0)

我看到两种简单的方法可以在C#中做你想做的事情(不了解ASP.NET):

您可以按SessionId过滤进程以获取单个会话的进程

Process[] processes = Process.GetProcesses().Where(p => p.SessionId == sessionID).ToArray();

或者您可以对结果进行排序以按会话对其进行分组

Process[] processes = Process.GetProcesses().OrderByDescending(p => p.SessionId);