internal static void AddBehaviors <TService>(ServiceDescription serviceDescription) where TService : class { TypeLoader <TService> .ApplyServiceInheritance <IServiceBehavior, KeyedByTypeCollection <IServiceBehavior> >( serviceDescription.Behaviors, GetIServiceBehaviorAttributes); ServiceBehaviorAttribute serviceBehavior = EnsureBehaviorAttribute(serviceDescription); if (serviceBehavior.Name != null) { serviceDescription.Name = new XmlName(serviceBehavior.Name).EncodedName; } if (serviceBehavior.Namespace != null) { serviceDescription.Namespace = serviceBehavior.Namespace; } if (string.IsNullOrEmpty(serviceBehavior.ConfigurationName)) { serviceDescription.ConfigurationName = typeof(TService).FullName; } else { serviceDescription.ConfigurationName = serviceBehavior.ConfigurationName; } }
private static void AddBehaviors(System.ServiceModel.Description.ServiceDescription serviceDescription) { Type serviceType = serviceDescription.ServiceType; TypeLoader.ApplyServiceInheritance <IServiceBehavior, KeyedByTypeCollection <IServiceBehavior> >(serviceType, serviceDescription.Behaviors, new TypeLoader.ServiceInheritanceCallback <IServiceBehavior, KeyedByTypeCollection <IServiceBehavior> >(System.ServiceModel.Description.ServiceDescription.GetIServiceBehaviorAttributes)); ServiceBehaviorAttribute attribute = EnsureBehaviorAttribute(serviceDescription); if (attribute.Name != null) { serviceDescription.Name = new XmlName(attribute.Name).EncodedName; } if (attribute.Namespace != null) { serviceDescription.Namespace = attribute.Namespace; } if (string.IsNullOrEmpty(attribute.ConfigurationName)) { serviceDescription.ConfigurationName = serviceType.FullName; } else { serviceDescription.ConfigurationName = attribute.ConfigurationName; } AspNetEnvironment.Current.EnsureCompatibilityRequirements(serviceDescription); }
internal static void AddBehaviors <TService>(ServiceDescription serviceDescription, IEnumerable <IServiceBehavior> injectedBehaviors = null) where TService : class { TypeLoader <TService> .ApplyServiceInheritance <IServiceBehavior, KeyedByTypeCollection <IServiceBehavior> >( serviceDescription.Behaviors, GetIServiceBehaviorAttributes); if (injectedBehaviors != null) { // Only add IServiceBehavior from DI if concrete type not already added // TODO: Add logging to state when an injected behavior has been skipped foreach (var behavior in injectedBehaviors) { if (!serviceDescription.Behaviors.Contains(behavior.GetType())) { serviceDescription.Behaviors.Add(behavior); } } } ServiceBehaviorAttribute serviceBehavior = EnsureBehaviorAttribute(serviceDescription); if (serviceBehavior.Name != null) { serviceDescription.Name = new XmlName(serviceBehavior.Name).EncodedName; } if (serviceBehavior.Namespace != null) { serviceDescription.Namespace = serviceBehavior.Namespace; } if (string.IsNullOrEmpty(serviceBehavior.ConfigurationName)) { serviceDescription.ConfigurationName = typeof(TService).FullName; } else { serviceDescription.ConfigurationName = serviceBehavior.ConfigurationName; } }