C# 如何获取HttpWebRequest的本地端口号?

C# 如何获取HttpWebRequest的本地端口号?,c#,.net,httpwebrequest,httpwebresponse,C#,.net,Httpwebrequest,Httpwebresponse,我正在使用HttpWebRequest异步发出一个长时间运行的请求。在请求运行时,我希望能够获取请求的本地端口(即,客户端上的端口,而不是服务器上的端口)。我该怎么做 我已经查看了HttpWebRequest.ServicePoint.BindIPEndPointDelegate,但这似乎只允许调用方指定本地addy/port。理想情况下,我希望允许HttpWebRequest正常选择其本地端口,然后询问它选择了什么 不幸的是,HttpWebRequest类实际上没有公开您的请求 我不建议在生产

我正在使用HttpWebRequest异步发出一个长时间运行的请求。在请求运行时,我希望能够获取请求的本地端口(即,客户端上的端口,而不是服务器上的端口)。我该怎么做


我已经查看了HttpWebRequest.ServicePoint.BindIPEndPointDelegate,但这似乎只允许调用方指定本地addy/port。理想情况下,我希望允许HttpWebRequest正常选择其本地端口,然后询问它选择了什么

不幸的是,
HttpWebRequest
类实际上没有公开您的请求

我不建议在生产中使用我下面要说的内容。这很有趣

ServicePoint
类有一个名为
m\u NetworkStream
的私有成员,通过内部属性
NetworkStream
公开

您可能已经知道,
NetworkStream
已经公开了一个公共的
Socket
属性,该属性为您提供了基础套接字,您可以从该套接字访问本地IP端点

因此,唯一的挑战是获取
ServicePoint.NetworkStream
PropertyInfo
,为特定的
HttpWebRequest
实例获取其值,从那里开始,它是一条直线

注意:对于一个合适的解决方案,您可能需要看一看,然后在它周围创建一个托管包装(如果还没有的话)


享受吧

只是好奇你为什么想知道这个。我正在滥用HTTP来创建一个通知机制。我想知道端口,以便其他流可以告诉服务器哪个通知通道是它们的。但是您是否考虑过其他HTTP机制?比如WCF。你的HttpWebRequest的另一端是什么?我正在使用一个不提供WCF接口的现有应用程序。我总是想找点程序员的乐趣,但反映出来的感觉有点脏。:)@艾里加姆:当然是脏的,没什么可争辩的。我已经提到,这不能用于生产。@MarcelNita正在列举ServicePoint的属性,但我看不到您所说的NetworkStream属性。我有BindingFlags.Instance | BindingFlags.NonPublic集。