Пример #1
0
        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);
        }
Пример #3
0
        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;
            }
        }