behaviorssection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Configuration / behaviorssection.cs / 1 / behaviorssection.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------

namespace System.ServiceModel.Configuration 
{
    using System.Configuration; 
    using System.Globalization; 
    using System.ServiceModel;
    using System.Security; 

    public partial class BehaviorsSection : ConfigurationSection
    {
        [ConfigurationProperty(ConfigurationStrings.EndpointBehaviors, Options = ConfigurationPropertyOptions.None)] 
        public EndpointBehaviorElementCollection EndpointBehaviors
        { 
            get { return (EndpointBehaviorElementCollection)base[ConfigurationStrings.EndpointBehaviors]; } 
        }
 
        [ConfigurationProperty(ConfigurationStrings.ServiceBehaviors, Options = ConfigurationPropertyOptions.None)]
        public ServiceBehaviorElementCollection ServiceBehaviors
        {
            get { return (ServiceBehaviorElementCollection)base[ConfigurationStrings.ServiceBehaviors]; } 
        }
 
        internal static BehaviorsSection GetSection() 
        {
            return (BehaviorsSection)ConfigurationHelpers.GetSection(ConfigurationStrings.BehaviorsSectionPath); 
        }

        /// 
        /// Critical - calls Critical method UnsafeGetSection which elevates in order to fetch config 
        ///            caller must guard access to resultant config section
        ///  
        [SecurityCritical] 
        internal static BehaviorsSection UnsafeGetSection()
        { 
            return (BehaviorsSection)ConfigurationHelpers.UnsafeGetSection(ConfigurationStrings.BehaviorsSectionPath);
        }

        ///  
        /// Critical - calls Critical method UnsafeGetAssociatedSection which elevates in order to fetch config
        ///            caller must guard access to resultant config section 
        ///  
        [SecurityCritical]
        internal static BehaviorsSection UnsafeGetAssociatedSection(ContextInformation evalContext) 
        {
            return (BehaviorsSection)ConfigurationHelpers.UnsafeGetAssociatedSection(evalContext, ConfigurationStrings.BehaviorsSectionPath);
        }
 
        /// 
        /// Critical - calls UnsafeGetAssociatedSection which elevates 
        /// Safe - doesn't leak resultant config 
        /// 
        [SecurityCritical, SecurityTreatAsSafe] 
        internal static void ValidateEndpointBehaviorReference(string behaviorConfiguration, ContextInformation evaluationContext, ConfigurationElement configurationElement)
        {
            // ValidateBehaviorReference built on assumption that evaluationContext is valid.
            // This should be protected at the callers site.  If assumption is invalid, then 
            // configuration system is in an indeterminate state.  Need to stop in a manner that
            // user code can not capture. 
            if (null == evaluationContext) 
            {
                DiagnosticUtility.DebugAssert("ValidateBehaviorReference() should only called with valid ContextInformation"); 
                DiagnosticUtility.FailFast("ValidateBehaviorReference() should only called with valid ContextInformation");
            }

            if (!String.IsNullOrEmpty(behaviorConfiguration)) 
            {
                BehaviorsSection behaviors = (BehaviorsSection)ConfigurationHelpers.UnsafeGetAssociatedSection(evaluationContext, ConfigurationStrings.BehaviorsSectionPath); 
                if (!behaviors.EndpointBehaviors.ContainsKey(behaviorConfiguration)) 
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidEndpointBehavior, 
                        behaviorConfiguration),
                        configurationElement.ElementInformation.Source,
                        configurationElement.ElementInformation.LineNumber));
                } 
            }
        } 
 
        /// 
        /// Critical - calls UnsafeGetAssociatedSection which elevates 
        /// Safe - doesn't leak resultant config
        /// 
        [SecurityCritical, SecurityTreatAsSafe]
        internal static void ValidateServiceBehaviorReference(string behaviorConfiguration, ContextInformation evaluationContext, ConfigurationElement configurationElement) 
        {
            // ValidateBehaviorReference built on assumption that evaluationContext is valid. 
            // This should be protected at the callers site.  If assumption is invalid, then 
            // configuration system is in an indeterminate state.  Need to stop in a manner that
            // user code can not capture. 
            if (null == evaluationContext)
            {
                DiagnosticUtility.DebugAssert("ValidateBehaviorReference() should only called with valid ContextInformation");
                DiagnosticUtility.FailFast("ValidateBehaviorReference() should only called with valid ContextInformation"); 
            }
 
            if (!String.IsNullOrEmpty(behaviorConfiguration)) 
            {
                BehaviorsSection behaviors = (BehaviorsSection)ConfigurationHelpers.UnsafeGetAssociatedSection(evaluationContext, ConfigurationStrings.BehaviorsSectionPath); 
                if (!behaviors.ServiceBehaviors.ContainsKey(behaviorConfiguration))
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidServiceBehavior,
                        behaviorConfiguration), 
                        configurationElement.ElementInformation.Source,
                        configurationElement.ElementInformation.LineNumber)); 
                } 
            }
        } 
    }
}

 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK