2009-08-17 124 views
1

我有一个WCF服务。我需要在实现ServiceContract的类中实现IServiceBehavior。我在该类上有一些指定服务行为的属性。我想问一下,在实现属性中指定的IServiceBehavior行为后是否仍然适用。实现IServiceBehavior会影响ServiceBehavior属性吗?

基本不

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, 
       ConcurrencyMode = ConcurrencyMode.Multiple)] 
public class MyService : IMyService 
{ 
... 
} 

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, 
       ConcurrencyMode = ConcurrencyMode.Multiple)] 
public class MyService : IMyService, IServiceBehavior 
{ 
... 
} 

在同我的意思是,我仍然有ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)意味着同样的事情。

我IServiceBehavior接口的实现如下:

void AddBindingParameters(ServiceDescription serviceDescription, 
          ServiceHostBase serviceHostBase, 
          Collection<ServiceEndpoint> endpoints, 
          BindingParameterCollection bindingParameters) 
{    
} 

void ApplyDispatchBehavior(ServiceDescription serviceDescription, 
          ServiceHostBase serviceHostBase) 
{ 
    IErrorHandler handler = new ErrorHandler(); 
    foreach (ChannelDispatcher dispatcher in serviceHostBase.ChannelDispatchers) 
    { 
     dispatcher.ErrorHandlers.Add(handler); 
    } 
} 

void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) 
{    
} 

我只是想实现集中的错误处理,我不想改变任何其他方式服务行为。

感谢您的帮助。

回答

2

是的,ServiceBehaviorAttribute中的行为仍然适用;您的IServiceBehavior只是为您提供一种方式来进一步定制运行时。