首页 新闻 会员 周边

高分求解,在线等待,WCF使用消息头传参数

0
悬赏园豆:100 [待解决问题]

我的设计是:使用消息头来传送服务端所需要的参数。
我的问题是:如何不需要在每个方法(如下的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(); //调用服务端方法
}

Peter.zhou的主页 Peter.zhou | 初学一级 | 园豆:14
提问于:2012-04-25 09:45
< >
分享
所有回答(2)
0

两种方式:

1、http://www.cnblogs.com/liulun/archive/2011/12/16/2290800.html

2、http://www.cnblogs.com/winston/archive/2009/09/27/1574902.html

yqpeng | 园豆:142 (初学一级) | 2012-04-25 13:46
0

1、可以创建一个全局的ClientProxy工厂在里面添加

2、所有的服务契约同意传入参数和返回值格式,手动进行序列化、反序列化和解析。

菜鸟老了 | 园豆:145 (初学一级) | 2012-05-04 00:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册