服务怎么知道来电者?

问题描述:

我有一个WCF服务。 我如何知道对我的服务的呼叫是来自本地机器还是来自网络的机器?服务怎么知道来电者?

感谢, Adrya

你可以检查调用者的IP。如果是从本地机器应该是“127.0.0.1”。 您可以从OperationContext对象获取调用者的IP(远程地址)。 这里更多的信息: http://www.danrigsby.com/blog/index.php/2008/05/21/get-the-clients-address-in-wcf/

+0

+1关于如何获取远程地址的链接,搜索文档的天数 – 2011-12-16 17:38:30

我在使用类似的本地计算机上所有已知的IP地址,启动造册....

NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces(); 
List<string> addressList = new List<string>(); 
foreach (NetworkInterface ni in nis) 
{ 
     IPInterfaceProperties iip = ni.GetIPProperties(); 
     UnicastIPAddressInformationCollection unis = iip.UnicastAddresses; 
     foreach (UnicastIPAddressInformation uni in unis) 
     { 
      string address = uni.Address.ToString(); 
      addressList.Add(address); 
     } 
} 

然后检查AddressList中看到如果它包含'远程'IP地址。 这应该涵盖任何请求从本地机器以IP地址而不是127.0.0.1呈现的请求。