14

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

我无法在运行时修改配置部分,因为它们是只读的。我知道如果我得到一个客户端代理的实例(即 ClientBase),我可以将我的自定义行为的一个实例添加到它的 Endpoint.Behaviors 中。但是,我必须为每个实例都这样做。

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

4

1 回答 1

14

您应该能够在代码中将行为添加到客户端,如下所示:

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

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

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

显然,您需要在首次调用服务之前完成所有这些操作。完成此操作后,您将无法再更改客户端。

马克

于 2009-07-28T16:08:50.453 回答