我需要为我的WCF客户端端点添加自定义行为扩展.我尝试通过配置执行此操作,但是被WFC配置无法正确解析类型名称时经常提到的错误所困扰.那么我可以以编程方式执行此操作吗?
我无法在运行时修改配置节,因为它们是只读的.我知道如果我得到客户端代理的实例(即ClientBase),我可以向其Endpoint.Behaviors添加我的自定义行为的实例.但是,我必须为每个实例执行此操作.
我是否可以全局访问端点并预先添加它们(例如,在Global.asax中),或者这些端点是否被实例化并暂时丢弃?
mar*_*c_s 14
您应该能够使用以下代码将行为添加到客户端:
IMyEndpointBehavior behavior = client.Endpoint.Behaviors.Find<IMyEndpointBehavior>();
if(behavior == null)
{
client.Endpoint.Behaviors.Add(new MyEndpointBehaviorImplementation());
}
Run Code Online (Sandbox Code Playgroud)
第一行将检查是否已应用该行为以避免应用它两次.如果它尚未应用(.Find()调用返回null),则可以以编程方式将该行为添加到客户端类.
显然,在发出对服务的第一次调用之前,您需要执行所有这些操作.完成后,您将无法再更改客户端.
渣