【问题标题】:How to get processes that belongs to a particular session?如何获取属于特定会话的进程?
【发布时间】:2010-12-09 07:12:18
【问题描述】:

我想获取针对特定会话的所有进程。 即如果有两个人在使用我的 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

谁能帮忙。

【问题讨论】:

    标签: c# asp.net session process


    【解决方案1】:

    您需要了解 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

    现在谈到您的具体问题,ASP.NET 运行时托管在 IIS 工作进程中。会话只是从浏览器中识别用户会话的逻辑范围,ASP.NET 提供了一个状态包来存储会话特定的值。所有用户(会话)都由相同(一组)工作进程提供服务 - 因此为每个会话查找进程没有任何意义。您所能做的就是找出 Web 服务器上正在执行的进程。

    【讨论】:

      【解决方案2】:

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

      您可以按 SessionId 过滤进程,以使进程为单个会话运行

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-16
        • 2014-06-04
        • 1970-01-01
        • 2021-05-25
        • 2021-05-02
        • 1970-01-01
        相关资源
        最近更新 更多