你可以使用WCF连接来获取连接的IP地址吗?

时间:2011-09-20 22:46:48

标签: .net wcf ip-address

我有一个Windows服务(.NET 3.5 / C#),它连接到公共互联网上外部服务器上的WCF服务。

我可以使用该WCF连接获取计算机的外部IP地址吗? WCF服务托管在我们的应用程序服务器上的IIS中。我可以做任何事情来获取我的外部IP地址吗?

2 个答案:

答案 0 :(得分:2)

  

我可以使用该WCF连接获取计算机的外部IP   地址?

如果您希望从发送请求的服务中获取外部IP,则答案为否。它与WCF无关。您的计算机可能甚至没有外部IP,因为它可能无法直接连接到Internet。外部IP可能属于您的计算机所连接的router。此外部IP将visible到您连接的WCF服务。因此,此服务可能会让您知道您的请求来自哪个外部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。

答案 1 :(得分: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