.Net HttpListener:如何识别调用进程

时间:2013-10-03 03:58:15

标签: c# httplistener httplistenerrequest

我使用System.Net.HttpListener和C#(Windows 7 +,。Net 4.0)编写了代理服务器。我想确定哪个进程正在发送请求(发件人保证在同一台机器上)。

好老@EricLaw有一些几乎可行的东西,http://blogs.msdn.com/b/fiddler/archive/2013/01/09/10138573.aspx但是......只有当我从港口#减去1时才会这样:

HttpListenerContext context = GetContext();
HttpListenerRequest request = context.Request;
int pid = 0;
if (request.IsLocal)
{
    int port = context.Request.RemoteEndPoint.Port;
    pid = Winsock.MapLocalPortToProcessId(port - 1)
}
return pid;

如果我不减1,则请求来自PID = 4,即系统进程。

减法是我应该做的事吗?或者有不同的方法来确定哪个进程发送了请求?

1 个答案:

答案 0 :(得分:2)

我博客上分享的代码运行得很好;它被用在Fiddler中,被数百万人使用。

您应该转储整个端口列表,看看发生了什么;也许从context.Request.RemoteEndPoint.Port返回的值存在问题。