2011-09-20 70 views
0

我有一个Windows服务(.NET 3.5/C#),它连接到公共互联网上的外部服务器上的WCF服务。您可以使用WCF连接来获取您的连接IP地址吗?

我可以使用该WCF连接来获取我的计算机的外部IP地址吗? WCF服务托管在我们的应用程序服务器的IIS内部。我能做些什么来获得我的外部IP地址吗?

+1

对不起,谁有未知IP? Windows服务? –

+0

我的winforms开发者说他不知道如何准确地获得一个面向公众的IP,所以我试图帮助他。特别是:运行Windows服务的计算机,它连接到托管ASP.NET和WCF的中央服务器。 – pearcewg

+1

您是否想要从发送请求的Windows服务中获取外部IP? – Dmitry

回答

1

如果你在.NET 3.5或4,在你的WCF服务使用此代码:

using System.ServiceModel; 
using System.ServiceModel.Channels; 

OperationContext context = OperationContext.Current; 
MessageProperties prop = context.IncomingMessageProperties; 
RemoteEndpointMessageProperty endpoint = 
    prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; 
string ip = endpoint.Address; 

来源:Obtaining client IP address in WCF 3.0

+0

-1:他想要的是_server_ IP地址,而不是客户端地址。 –

+0

+1:不,他没有。他希望通过连接到运行WCF服务的另一台服务器来连接客户端(Windows服务)IP。 –

+0

我错过了。他想要他的本地机器的地址,因为这是Windows服务运行的地方。 –

2

我是否可以使用WCF连接,让我的计算机的外部IP 地址?

如果你想从发送请求的服务中获得你的外部IP比答案是否定的。它与WCF无关。您的电脑甚至可能没有外部IP,因为它可能没有直接连接到互联网。外部IP可能属于您的计算机连接到的router。此外部IP将为您连接到的WCF服务的visible。因此,该服务可能会让您知道您的请求来自哪个外部IP(如果您将新的'MyIP'字段添加到数据合同中)。

Your machine -> Request      -> External WCF Service 
Your machine <- Response(your IP is X.X.X.X) <- External WCF Service 

或者你也可以从automation.whatismyip.com

更新基于您的评论废了:

...我希望他们能够得到自己的IP地址,并发送 到服务器。

他们不知道他们的外部 IP地址,但server will know所以没有需要发送的IP。

+0

+1为automation.whatismyip.com作为检索它的最简单的方法,如。string serverIP = new WebClient()。DownloadString(“http:/ /automation.whatismyip.com/n09230945.asp“); – tonycoupland

相关问题