C# 无法在服务器端WCF上获取正确的客户端IP地址
为了在WCF中获得客户端IP,我使用以下方法:C# 无法在服务器端WCF上获取正确的客户端IP地址,c#,wcf,client,ip,C#,Wcf,Client,Ip,为了在WCF中获得客户端IP,我使用以下方法: public static byte[] GetUserIP(OperationContext context) { var messageProperties = context.IncomingMessageProperties; RemoteEndpointMessageProperty endpointProperty = messageProp
public static byte[] GetUserIP(OperationContext context)
{
var messageProperties = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpointProperty =
messageProperties[RemoteEndpointMessageProperty.Name]
as RemoteEndpointMessageProperty;
return GetIPFromString(endpointProperty.Address);
}
我的机器有一些本地IPv4,这个方法一直工作到昨天。。可能是我们的网络管理员改变了什么;我不知道,但是现在
endpointProperty.Address
正在返回“::1”而不是“xxx.xxx.xxx”。有人能解释一下是什么导致了这种情况吗?这是因为您的机器现在使用的是IPv6环回而不是IPv4
它还将影响intranet IP地址,因为您的管理员可能已全面启用IPv6,因此机器A将使用其IPv6地址向机器B标识自己
在公共环境中,除非整个互联网迁移到IPv6,否则不太可能造成问题
无论哪种方式,您都应该确保使用IPAddress
中的方法来解析端点的IP,而不是手动启动自己的IP
我还遇到了一个类似的问题,我设置了一个数据库列,用于跟踪IP地址,如varchar(15);greta一直在工作,直到同样的事情发生在我们内部,突然我所有的请求日志开始破坏内部请求 谢谢你的回答。我想了一下,但是::1对我来说似乎很奇怪。IPv6是不是有点像127.0.0.1?!是的::1确实是ipv6环回。还有其他众所周知的IPv6地址(但它们并不完全是现成的)。我有一个类似的要求,使用上面的代码行可以得到IPv6,相反,我正在寻找客户端的mac地址,以便能够识别不在同一网络上的客户端(如VPN)。以下是我的查询链接,在同一个网站上发布任何内容都非常感谢,因为我正处于关键的截止日期: