//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace System.ServiceModel.Activation { using System.Collections.Generic; using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.Collections.ObjectModel; using System.ServiceModel.Dispatcher; // This attribute specifies what the service implementation requires for AspNet Integration mode. [AttributeUsage(ServiceModelAttributeTargets.ServiceBehavior)] public sealed class AspNetCompatibilityRequirementsAttribute : Attribute, IServiceBehavior { // AppCompat: The default has been changed in 4.5 to Allowed so that fewer people need to change it. // For deployment compat purposes, apps targeting 4.0 should behave the same as if 4.5 was not installed. AspNetCompatibilityRequirementsMode requirementsMode = OSEnvironmentHelper.IsApplicationTargeting45 ? AspNetCompatibilityRequirementsMode.Allowed : AspNetCompatibilityRequirementsMode.NotAllowed; // NotAllowed: Validates that the service is not running in the AspNetCompatibility mode. // // Required: Validates that service runs in the AspNetCompatibility mode only. // // Allowed: Allows both AspNetCompatibility mode and the default Indigo mode. // public AspNetCompatibilityRequirementsMode RequirementsMode { get { return this.requirementsMode; } set { AspNetCompatibilityRequirementsModeHelper.Validate(value); this.requirementsMode = value; } } void IServiceBehavior.AddBindingParameters(ServiceDescription description, ServiceHostBase serviceHostBase, Collection endpoints, BindingParameterCollection parameters) { } void IServiceBehavior.Validate(ServiceDescription description, ServiceHostBase serviceHostBase) { if (description == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("description"); } AspNetEnvironment.Current.ValidateCompatibilityRequirements(RequirementsMode); } void IServiceBehavior.ApplyDispatchBehavior(ServiceDescription description, ServiceHostBase serviceHostBase) { } } }