//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ namespace System.ServiceModel.Configuration { using System.Configuration; using System.Runtime; using System.Security; using System.Security.Permissions; using System.ServiceModel; public sealed partial class ServiceHostingEnvironmentSection : ConfigurationSection { public ServiceHostingEnvironmentSection() { } protected override void PostDeserialize() { // Perf optimization. If the configuration is coming from machine.config // It is safe and we don't need to check for permissions. if (EvaluationContext.IsMachineLevel) { return; } if (PropertyValueOrigin.SetHere == ElementInformation.Properties[ConfigurationStrings.MinFreeMemoryPercentageToActivateService].ValueOrigin) { try { new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); } catch (SecurityException) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException( SR.GetString(SR.Hosting_MemoryGatesCheckFailedUnderPartialTrust))); } } } [ConfigurationProperty(ConfigurationStrings.DefaultCollectionName, Options = ConfigurationPropertyOptions.IsDefaultCollection)] public TransportConfigurationTypeElementCollection TransportConfigurationTypes { get { return (TransportConfigurationTypeElementCollection)base[ConfigurationStrings.DefaultCollectionName]; } } [ConfigurationProperty(ConfigurationStrings.BaseAddressPrefixFilters, Options = ConfigurationPropertyOptions.None)] public BaseAddressPrefixFilterElementCollection BaseAddressPrefixFilters { get { return (BaseAddressPrefixFilterElementCollection)base[ConfigurationStrings.BaseAddressPrefixFilters]; } } [ConfigurationProperty(ConfigurationStrings.ServiceActivations, Options = ConfigurationPropertyOptions.None)] public ServiceActivationElementCollection ServiceActivations { get { return (ServiceActivationElementCollection)base[ConfigurationStrings.ServiceActivations]; } } [ConfigurationProperty(ConfigurationStrings.AspNetCompatibilityEnabled, DefaultValue = false)] public bool AspNetCompatibilityEnabled { get { return (bool)base[ConfigurationStrings.AspNetCompatibilityEnabled]; } set { base[ConfigurationStrings.AspNetCompatibilityEnabled] = value; } } [ConfigurationProperty(ConfigurationStrings.CloseIdleServicesAtLowMemory, DefaultValue = false)] public bool CloseIdleServicesAtLowMemory { get { return (bool)base[ConfigurationStrings.CloseIdleServicesAtLowMemory]; } set { base[ConfigurationStrings.CloseIdleServicesAtLowMemory] = value; } } [ConfigurationProperty(ConfigurationStrings.MinFreeMemoryPercentageToActivateService, DefaultValue = 5)] [IntegerValidator(MinValue = 0, MaxValue = 99)] public int MinFreeMemoryPercentageToActivateService { get { return (int)base[ConfigurationStrings.MinFreeMemoryPercentageToActivateService]; } set { base[ConfigurationStrings.MinFreeMemoryPercentageToActivateService] = value; } } [ConfigurationProperty(ConfigurationStrings.MultipleSiteBindingsEnabled, DefaultValue = false)] public bool MultipleSiteBindingsEnabled { get { return (bool)base[ConfigurationStrings.MultipleSiteBindingsEnabled]; } set { base[ConfigurationStrings.MultipleSiteBindingsEnabled] = value; } } internal static ServiceHostingEnvironmentSection GetSection() { return (ServiceHostingEnvironmentSection)ConfigurationHelpers.GetSection(ConfigurationStrings.ServiceHostingEnvironmentSectionPath); } [Fx.Tag.SecurityNote(Critical = "Calls Critical method UnsafeGetSection which elevates in order to fetch config." + "Caller must guard access to resultant config section.")] [SecurityCritical] internal static ServiceHostingEnvironmentSection UnsafeGetSection() { return (ServiceHostingEnvironmentSection)ConfigurationHelpers.UnsafeGetSection(ConfigurationStrings.ServiceHostingEnvironmentSectionPath); } } }