WCF开发工具的应用范围比较广泛,可以帮助开发人员轻松的实现各种特定的功能需求。在这里我们可以了解到WCF获取客户端IP的相关操作方法,以此来进一步对这一开发工具有一个深入的认识。#t#
在公司的一个项目里面,使用WCF做通讯,里面需要取得使用WCF做客户端的IP,在服务器上做进一步的处理,但是让人很失望的是WCF 3.0 里面并不能支持这个功能。
还好,微软在3.5的新版WCF中提供了这个方法。
不说废话,直接看如何实现WCF获取客户端IP。简单定义一个服务:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace ClientInfoSample
{
[ServiceContract]
public interface IService
{
[OperationContract]
string GetData(string value);
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
在建立通道之后按照可以实现WCF获取客户端IP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Channels;
namespace ClientInfoSample
{
public class MyService : IService
{
public string GetData(string value)
{
OperationContext context = OperationContext.Current;
MessageProperties essageProperties =
context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpointProperty =
messageProperties [RemoteEndpointMessageProperty.Name]
as RemoteEndpointMessageProperty;
return string.Format("Hello {0}! Your IP address is {1}
and your port is {2}", value, endpointProperty.Address,
endpointProperty.Port);
}
}
}
config:
< ?xml version="1.0" encoding="utf-8" ?>
< configuration>
< system.web>
< compilation debug="true" />
< /system.web>
< system.serviceModel>
< services>
< service name="ClientInfoSample.MyService"
behaviorConfiguration="ClientInfoSample.MyServiceBehavior">
< host>
< baseAddresses>
< add baseAddress = "http://localhost:8731/
Design_Time_Addresses/ClientInfoSample/MyService/" />
< /baseAddresses>
< /host>
< endpoint address ="" binding="wsHttpBinding"
contract="ClientInfoSample.IService">
< identity>
< dns value="localhost"/>
< /identity>
< /endpoint>
< endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange"/>
< /service>
< /services>
< behaviors>
< serviceBehaviors>
< behavior name="ClientInfoSample.MyServiceBehavior">
< serviceMetadata httpGetEnabled="True"/>
< serviceDebug includeExceptionDetailInFaults="False" />
< /behavior>
< /serviceBehaviors>
< /behaviors>
< /system.serviceModel>
< /configuration>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
以上就是对WCF获取客户端IP的相关介绍。