我的设计是:使用消息头来传送服务端所需要的参数。
我的问题是:如何不需要在每个方法(如下的GetServerDTime、GetServerName)中都写增加消息头的代码(AddMessageHeader();),因为我的方法太多了,能否在调用服务器方法时自动增加消息头.(per-Call)
代码如下
-------------------------------------------------------------------------------------
//创建WCF服务客户端对象Srv_Global.Srv_GlobalClient
public Srv_Global.Srv_GlobalClient CreateSrv_Global()
{
Srv_Global.Srv_GlobalClient proxy = new Srv_Global.Srv_GlobalClient(bd, ea);
return proxy;
}
//建立对象实例
Srv_Global.Srv_GlobalClient proxy=CreateSrv_Global();
private void AddMessageHeader()
{
using (OperationContextScope scope = new OperationContextScope(proxy.InnerChannel))
{
MessageHeader header = MessageHeader.CreateHeader("UserID", "ns", "Test");
OperationContext.Current.OutgoingMessageHeaders.Add(header);
}
}
//方法一:获取服务器时间
public string GetServerDTime()
{
AddMessageHeader();//增加消息头
return proxy.getServerDTime(); //调用服务端方法
}
//方法二:获取服务器名称
public string GetServerName()
{
AddMessageHeader();//增加消息头
return proxy.getServerName(); //调用服务端方法
}
两种方式:
1、http://www.cnblogs.com/liulun/archive/2011/12/16/2290800.html
2、http://www.cnblogs.com/winston/archive/2009/09/27/1574902.html
1、可以创建一个全局的ClientProxy工厂在里面添加
2、所有的服务契约同意传入参数和返回值格式,手动进行序列化、反序列化和解析。