C# HttpListenerContext.Request.RemoteEndPoint IP地址行为

C# HttpListenerContext.Request.RemoteEndPoint IP地址行为,c#,.net,amazon-ec2,httplistener,httplistenerrequest,C#,.net,Amazon Ec2,Httplistener,Httplistenerrequest,我在服务中有一段代码,它侦听端口,然后使用HttpListenerContext.Request.RemoteEndPoint记录IP地址 我注意到,在一台机器“A”中,当远程端点也在同一台机器A上时,HttpListenerContext.Request.RemoteEndPoint返回机器A的IP地址,例如192.168.20.12 其中,当同一段代码在不同的机器B上运行时,远程端点也在同一机器B中,HttpListenerContext.Request.RemoteEndPoint返回12

我在服务中有一段代码,它侦听端口,然后使用HttpListenerContext.Request.RemoteEndPoint记录IP地址

我注意到,在一台机器“A”中,当远程端点也在同一台机器A上时,HttpListenerContext.Request.RemoteEndPoint返回机器A的IP地址,例如192.168.20.12

其中,当同一段代码在不同的机器B上运行时,远程端点也在同一机器B中,HttpListenerContext.Request.RemoteEndPoint返回127.0.0.1

有人知道为什么会有不同吗

对于我的应用程序,我希望有正确的IP地址(192.168.20.12),而不是环回地址。如何才能获得这些信息


更多信息:机器A是运行windows 7的物理桌面。计算机B是运行windows server 2012的EC2实例。

问题不在于HttpListenerContext.Request.RemoteEndPoint返回了错误的IP地址。。。问题是,连接到端口的任何东西都连接到环回地址,并且您的侦听器正确地报告了这一点。假设您确实希望使用侦听器监视来自远程机器的连接,这实际上是一个无关紧要的问题(因为您无法从远程机器连接到环回地址)。同样,如果连接到您的端口的计算机具有多个IP地址,您将无法选择返回哪一个HttpListenerContext.Request.RemoteEndPoint。它应该返回远程计算机选择连接到您的服务器的哪个IP地址。

很抱歉,我尝试了这个方法:从远程应用程序,而不是使用127.0.0.1,我使用真实的IP进行连接。运气不好,HttpListenerContext.Request.RemoteEndPoint仍然返回127.0.0.1。