十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
WCF地址能否获取客户端地址IP信息,好多人都遇到过,我们传统的机遇的网络应用和 Web Service都提供了获取客户端地址的信息的实现机制。下面进行介绍说明。

10年积累的做网站、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有竞秀免费网站建设让你可以放心的选择与我们合作。
WCF地址主要使用是.NET3.5里的服务端上下文的消息实例的RemoteEndpointMessageProperty属性,获取客户端地址信息。但是限制的绑定是HTTP、TCP相关的绑定协议。网络通信的底层机制来说,数据包如果经由TCP传输,IP数据包应该包含地址和端口信息,WCF地址这个我们网络编程也可以理解。但是WCF获取客户端地址信息早期却没提供相应的实现。其实按照道理来说没什么难度。只是多做个数据包的解析工作,然后把地址信息包装即可。#t#
WCF地址示例代码:
这里给出服务端获取客户端IP地址信息的示例代码分析和实现过程,这里的测试主要是针对HTTP、TCP相关的协议做了4个测试。NamePipeBinding等协议不做测试了,本地协议不需要IP和端口。我们主要测试的是几个主要的协议,来验证以上的结论。
服务端:
主要是对RemoteEndpointMessageProperty属性的使用来获取地址、端口信息。WCF地址具体代码如下:
- 服务契约
 - [ServiceContract(Namespace = "http://www.cnblogs.com/frank_xl/")]
 - public interface IWCFService
 - {
 - //操作契约
 - [OperationContract]
 - string SayHelloToUser(string name);
 - }
 - //服务类,继承接口。实现服务契约定义的操作
 - public class WCFService : IWCFService
 - {
 - //实现接口定义的方法
 - public string SayHelloToUser(string name)
 - {
 - //提供方法执行的上下文环境
 - OperationContext context = OperationContext.Current;
 - //获取传进的消息属性
 - MessageProperties properties = context.IncomingMessageProperties;
 - //获取消息发送的远程终结点IP和端口
 - RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
 - Console.WriteLine(string.Format("Hello {0},You arefrom {1}:{2}", name, endpoint.Address,endpoint.Port));
 - return string.Format("Hello {0},You arefrom {1}:{2}", name, endpoint.Address, endpoint.Port);
 - }
 - }