服务如何知道来电者?

时间:2010-09-22 10:21:28

标签: c# wcf

我有一个WCF服务。 我怎么知道我的服务电话是来自本地机器还是来自网络的机器?

谢谢, Adrya

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

我在启动时使用像......这样的东西在本地机器上编译所有已知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地址。 这应该涵盖从本地机器出现的任何请求,其中包含除127.0.0.1以外的IP地址。