2009-08-17 8 views
1

Ich habe einen WCF-Dienst. Ich muss IServiceBehavior in meiner Klasse implementieren, die ServiceContract implementiert. Ich habe einige Attribute für diese Klasse, die das Dienstverhalten angeben. Ich wollte fragen, ob nach der Implementierung von IServiceBehavior Verhalten in Attribute angegeben gelten weiterhin.Beeinflusst das Implementieren von IServiceBehavior ServiceBehavior-Attribute?

Grundsätzlich tut

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

mittlere elbe wie

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

Aus dem gleichen meine ich, dass ich ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple) noch haben.

Meine Implementierung von IServiceBehavior ist wie folgt:

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) 
{    
} 

Ich möchte nur zentrale Fehlerbehandlung implementieren, ich will nicht Service Verhalten auf andere Weise ändern.

Danke für Hilfe.

Antwort

2

Ja, das Verhalten im ServiceBehaviorAttribute gilt weiterhin; Ihr IServiceBehavior bietet Ihnen lediglich eine Möglichkeit, die Runtime weiter anzupassen.

Verwandte Themen