【问题标题】:.Net HttpListener: how to identify calling process.Net HttpListener:如何识别调用进程
【发布时间】:2013-10-09 15:18:06
【问题描述】:

我使用 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,即系统进程。

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

【问题讨论】:

    标签: c# httplistener httplistenerrequest


    【解决方案1】:

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

    你应该转储整个端口列表,看看发生了什么;可能是context.Request.RemoteEndPoint.Port返回的值有问题。

    【讨论】:

    • “我知道!我使用 Fiddler,事实上我现在正在使用它......哦......”关闭 Fiddler 解决了这个问题。 :-)
    • 呵呵...是的,当你运行 Fiddler 时,你是从浏览器->Fiddler->Server 连接的。
    猜你喜欢
    • 2012-08-20
    • 2014-01-06
    • 1970-01-01
    • 2011-06-08
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多