以编程方式和全局添加自定义WCF客户端端点行为扩展

时间:2009-07-28 15:48:44

标签: wcf behavior

我需要为我的WCF客户端端点添加自定义行为扩展。我尝试通过配置执行此操作,但是被WFC配置无法正确解析类型名称时经常提到的错误所困扰。那么我可以以编程方式执行此操作吗?

我无法在运行时修改配置节,因为它们是只读的。我知道如果我得到客户端代理的实例(即ClientBase),我可以向其Endpoint.Behaviors添加我的自定义行为的实例。但是,我必须为每个实例执行此操作。

我可以全局访问端点并预先添加它们(例如在Global.asax中),还是将这些端点实例化并暂时丢弃?

1 个答案:

答案 0 :(得分:14)

您应该能够使用以下代码将行为添加到客户端:

IMyEndpointBehavior behavior = client.Endpoint.Behaviors.Find<IMyEndpointBehavior>();

if(behavior == null)
{
   client.Endpoint.Behaviors.Add(new MyEndpointBehaviorImplementation());
}

第一行将检查是否已应用该行为以避免两次应用它。如果它尚未应用(.Find()调用返回null),则可以通过编程方式将该行为添加到客户端类。

显然,在发出对服务的第一次调用之前,您需要执行所有这些操作。完成后,您将无法再更改客户端。

马克