我有一个Windows服务(.NET 3.5 / C#),它连接到公共互联网上外部服务器上的WCF服务。
我可以使用该WCF连接获取计算机的外部IP地址吗? WCF服务托管在我们的应用程序服务器上的IIS中。我可以做任何事情来获取我的外部IP地址吗?
答案 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;