2009-08-17 15 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)を持っているという意味では同じでは

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

と同じことを意味しています。次のように

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は、ランタイムのさらなるカスタマイズを提供する方法を提供するだけです。

関連する問題