Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在服务器端WCF上获取正确的客户端IP地址_C#_Wcf_Client_Ip - Fatal编程技术网

C# 无法在服务器端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

为了在WCF中获得客户端IP,我使用以下方法:

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)。以下是我的查询链接,在同一个网站上发布任何内容都非常感谢,因为我正处于关键的截止日期: