C# 如何获取HttpWebRequest的本地端口号?
我正在使用HttpWebRequest异步发出一个长时间运行的请求。在请求运行时,我希望能够获取请求的本地端口(即,客户端上的端口,而不是服务器上的端口)。我该怎么做C# 如何获取HttpWebRequest的本地端口号?,c#,.net,httpwebrequest,httpwebresponse,C#,.net,Httpwebrequest,Httpwebresponse,我正在使用HttpWebRequest异步发出一个长时间运行的请求。在请求运行时,我希望能够获取请求的本地端口(即,客户端上的端口,而不是服务器上的端口)。我该怎么做 我已经查看了HttpWebRequest.ServicePoint.BindIPEndPointDelegate,但这似乎只允许调用方指定本地addy/port。理想情况下,我希望允许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集。