我需要一个自定义的行为扩展添加到我的WCF客户端的端点。我试图通过配置这样做,而是由经常提到的臭虫WFC配置不能正确解析类型名被咬伤。因此,我可以做到这一点编程呢?

,因为它们是只读的,我不能在运行时修改配置部分。我知道如果我得到阿霍德一个客户端代理(即ClientBase)的实例,我可以添加到它的Endpoint.Behaviors实例的我的自定义行为。然而,我将不得不为每个实例做到这一点。

能否到达端点全局和预添加它们(例如,在Global.asax中),或者是这些端点实例化并瞬时丢弃?

有帮助吗?

解决方案

您应该能够将行为添加到客户端的代码是这样的:

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

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

如果该行为已被应用,以避免施加两次第一行会检查。如果它不被已经应用(在.Find()调用返回null),那么你可以通过编程这种行为添加到您的客户端类。

您需要做的这一切都在发出第一次调用服务之前,很明显。一旦你做到了,你不能再更改客户端。

马克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top