Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Configuration / ExtensionsSection.cs / 1 / ExtensionsSection.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Configuration { using System.Configuration; using System.ServiceModel.Channels; using System.ServiceModel; using System.ServiceModel.Description; using System.Diagnostics; using System.Globalization; using System.ServiceModel.Diagnostics; using System.Security; public partial class ExtensionsSection : ConfigurationSection { [ConfigurationProperty(ConfigurationStrings.BehaviorExtensions)] public ExtensionElementCollection BehaviorExtensions { get {return (ExtensionElementCollection) base[ConfigurationStrings.BehaviorExtensions]; } } [ConfigurationProperty(ConfigurationStrings.BindingElementExtensions)] public ExtensionElementCollection BindingElementExtensions { get {return (ExtensionElementCollection) base[ConfigurationStrings.BindingElementExtensions]; } } [ConfigurationProperty(ConfigurationStrings.BindingExtensions)] public ExtensionElementCollection BindingExtensions { get {return (ExtensionElementCollection) base[ConfigurationStrings.BindingExtensions]; } } void InitializeBehaviorElementExtensions() { this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.ClientCredentials, typeof(ClientCredentialsElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.ServiceCredentials, typeof(ServiceCredentialsElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.CallbackDebugSectionName, typeof(CallbackDebugElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.ClientViaSectionName, typeof(ClientViaElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.SynchronousReceiveSectionName, typeof(SynchronousReceiveElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.ServiceMetadataPublishingSectionName, typeof(ServiceMetadataPublishingElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.ServiceDebugSectionName, typeof(ServiceDebugElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.ServiceAuthorizationSectionName, typeof(ServiceAuthorizationElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.ServiceSecurityAuditSectionName, typeof(ServiceSecurityAuditElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.ServiceThrottlingSectionName, typeof(ServiceThrottlingElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.TransactedBatchingSectionName, typeof(TransactedBatchingElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.DataContractSerializerSectionName, typeof(DataContractSerializerElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.ServiceTimeouts, typeof(ServiceTimeoutsElement).AssemblyQualifiedName)); this.BehaviorExtensions.Add(new ExtensionElement(ConfigurationStrings.CallbackTimeouts, typeof(CallbackTimeoutsElement).AssemblyQualifiedName)); } void InitializeBindingElementExtenions() { this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.BinaryMessageEncodingSectionName, typeof(BinaryMessageEncodingElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.CompositeDuplexSectionName, typeof(CompositeDuplexElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.OneWaySectionName, typeof(OneWayElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.TransactionFlowSectionName, typeof(TransactionFlowElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.HttpsTransportSectionName, typeof(HttpsTransportElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.HttpTransportSectionName, typeof(HttpTransportElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.MsmqIntegrationSectionName, typeof(MsmqIntegrationElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.MsmqTransportSectionName, typeof(MsmqTransportElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.MtomMessageEncodingSectionName, typeof(MtomMessageEncodingElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.NamedPipeTransportSectionName, typeof(NamedPipeTransportElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.PeerTransportSectionName, typeof(PeerTransportElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.PnrpPeerResolverSectionName, typeof(PnrpPeerResolverElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.PrivacyNoticeSectionName, typeof(PrivacyNoticeElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.ReliableSessionSectionName, typeof(ReliableSessionElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.SecuritySectionName, typeof(SecurityElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.SslStreamSecuritySectionName, typeof(SslStreamSecurityElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.TcpTransportSectionName, typeof(TcpTransportElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.TextMessageEncodingSectionName, typeof(TextMessageEncodingElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.UnrecognizedPolicyAssertionSectionName, typeof(UnrecognizedPolicyAssertionElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.UseManagedPresentationSectionName, typeof(UseManagedPresentationElement).AssemblyQualifiedName)); this.BindingElementExtensions.Add(new ExtensionElement(ConfigurationStrings.WindowsStreamSecuritySectionName, typeof(WindowsStreamSecurityElement).AssemblyQualifiedName)); } void InitializeBindingExtensions() { this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.BasicHttpBindingCollectionElementName, typeof(BasicHttpBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.CustomBindingCollectionElementName, typeof(CustomBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.MsmqIntegrationBindingCollectionElementName, typeof(MsmqIntegrationBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.NetMsmqBindingCollectionElementName, typeof(NetMsmqBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.NetNamedPipeBindingCollectionElementName, typeof(NetNamedPipeBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.NetPeerTcpBindingCollectionElementName, typeof(NetPeerTcpBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.NetTcpBindingCollectionElementName, typeof(NetTcpBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.WSDualHttpBindingCollectionElementName, typeof(WSDualHttpBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.WSFederationHttpBindingCollectionElementName, typeof(WSFederationHttpBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.WS2007FederationHttpBindingCollectionElementName, typeof(WS2007FederationHttpBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.WSHttpBindingCollectionElementName, typeof(WSHttpBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.WS2007HttpBindingCollectionElementName, typeof(WS2007HttpBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.MexHttpBindingCollectionElementName, typeof(MexHttpBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.MexHttpsBindingCollectionElementName, typeof(MexHttpsBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.MexNamedPipeBindingCollectionElementName, typeof(MexNamedPipeBindingCollectionElement).AssemblyQualifiedName)); this.BindingExtensions.Add(new ExtensionElement(ConfigurationStrings.MexTcpBindingCollectionElementName, typeof(MexTcpBindingCollectionElement).AssemblyQualifiedName)); } protected override void InitializeDefault() { this.InitializeBehaviorElementExtensions(); this.InitializeBindingElementExtenions(); this.InitializeBindingExtensions(); } /// Be sure to update UnsafeLookupAssociatedCollection if you modify this method internal static ExtensionElementCollection LookupAssociatedCollection(Type extensionType, ContextInformation evaluationContext, out string collectionName) { collectionName = GetExtensionType(extensionType); return ExtensionsSection.LookupCollection(collectionName, evaluationContext); } ////// Critical - calls Critical method UnsafeLookupCollection which elevates in order to fetch config /// caller must guard access to resultant config section /// /// Be sure to update LookupAssociatedCollection if you modify this method [SecurityCritical] internal static ExtensionElementCollection UnsafeLookupAssociatedCollection(Type extensionType, ContextInformation evaluationContext, out string collectionName) { collectionName = GetExtensionType(extensionType); return ExtensionsSection.UnsafeLookupCollection(collectionName, evaluationContext); } [SecurityRequiresReview] private static string GetExtensionType(Type extensionType) { string collectionName = String.Empty; if (extensionType.IsSubclassOf(typeof(BehaviorExtensionElement))) { collectionName = ConfigurationStrings.BehaviorExtensions; } else if (extensionType.IsSubclassOf(typeof(BindingElementExtensionElement))) { collectionName = ConfigurationStrings.BindingElementExtensions; } else if (extensionType.IsSubclassOf(typeof(BindingCollectionElement))) { collectionName = ConfigurationStrings.BindingExtensions; } else { // LookupAssociatedCollection built on assumption that extensionType 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. DiagnosticUtility.DebugAssert(String.Format(CultureInfo.InvariantCulture, "{0} is not a type supported by the ServiceModelExtensionsSection collections.", extensionType.AssemblyQualifiedName)); DiagnosticUtility.FailFast(String.Format(CultureInfo.InvariantCulture, "{0} is not a type supported by the ServiceModelExtensionsSection collections.", extensionType.AssemblyQualifiedName)); } return collectionName; } /// Be sure to update UnsafeLookupCollection if you modify this method internal static ExtensionElementCollection LookupCollection(string collectionName, ContextInformation evaluationContext) { ExtensionElementCollection collection = null; ExtensionsSection extensionsSection = null; if (null != evaluationContext) { extensionsSection = (ExtensionsSection)ConfigurationHelpers.GetAssociatedSection(evaluationContext, ConfigurationStrings.ExtensionsSectionPath); } else { if (DiagnosticUtility.ShouldTraceWarning) { TraceUtility.TraceEvent(TraceEventType.Warning, TraceCode.EvaluationContextNotFound, null, (Exception) null); } extensionsSection = (ExtensionsSection)ConfigurationHelpers.GetSection(ConfigurationStrings.ExtensionsSectionPath); } switch (collectionName) { case (ConfigurationStrings.BehaviorExtensions): collection = extensionsSection.BehaviorExtensions; break; case (ConfigurationStrings.BindingElementExtensions): collection = extensionsSection.BindingElementExtensions; break; case (ConfigurationStrings.BindingExtensions): collection = extensionsSection.BindingExtensions; break; default: // LookupCollection built on assumption that collectionName 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. DiagnosticUtility.DebugAssert(String.Format(CultureInfo.InvariantCulture, "{0} is not a valid ServiceModelExtensionsSection collection name.", collectionName)); DiagnosticUtility.FailFast(String.Format(CultureInfo.InvariantCulture, "{0} is not a valid ServiceModelExtensionsSection collection name.", collectionName)); break; } return collection; } ////// Critical - calls Critical method UnsafeGetAssociatedSection which elevates in order to fetch config /// caller must guard access to resultant config section /// /// Be sure to update LookupCollection if you modify this method [SecurityCritical] internal static ExtensionElementCollection UnsafeLookupCollection(string collectionName, ContextInformation evaluationContext) { ExtensionElementCollection collection = null; ExtensionsSection extensionsSection = null; if (null != evaluationContext) { extensionsSection = (ExtensionsSection)ConfigurationHelpers.UnsafeGetAssociatedSection(evaluationContext, ConfigurationStrings.ExtensionsSectionPath); } else { if (DiagnosticUtility.ShouldTraceWarning) { TraceUtility.TraceEvent(TraceEventType.Warning, TraceCode.EvaluationContextNotFound, null, (Exception)null); } extensionsSection = (ExtensionsSection)ConfigurationHelpers.UnsafeGetSection(ConfigurationStrings.ExtensionsSectionPath); } switch (collectionName) { case (ConfigurationStrings.BehaviorExtensions): collection = extensionsSection.BehaviorExtensions; break; case (ConfigurationStrings.BindingElementExtensions): collection = extensionsSection.BindingElementExtensions; break; case (ConfigurationStrings.BindingExtensions): collection = extensionsSection.BindingExtensions; break; default: // LookupCollection built on assumption that collectionName 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. DiagnosticUtility.DebugAssert(String.Format(CultureInfo.InvariantCulture, "{0} is not a valid ServiceModelExtensionsSection collection name.", collectionName)); DiagnosticUtility.FailFast(String.Format(CultureInfo.InvariantCulture, "{0} is not a valid ServiceModelExtensionsSection collection name.", collectionName)); break; } return collection; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EditableRegion.cs
- OdbcHandle.cs
- InternalBufferManager.cs
- NgenServicingAttributes.cs
- ObjectNavigationPropertyMapping.cs
- ResourceProviderFactory.cs
- DataControlReference.cs
- ControlCachePolicy.cs
- DataListItem.cs
- BooleanKeyFrameCollection.cs
- ClientBuildManager.cs
- BaseProcessProtocolHandler.cs
- OleDbMetaDataFactory.cs
- MetafileHeader.cs
- NGCSerializationManagerAsync.cs
- PolicyAssertionCollection.cs
- SrgsItemList.cs
- Predicate.cs
- FileNotFoundException.cs
- UInt64Storage.cs
- SafeRightsManagementPubHandle.cs
- RequestCachePolicy.cs
- OleDbConnectionInternal.cs
- TransformConverter.cs
- MenuStrip.cs
- InlinedAggregationOperator.cs
- Triplet.cs
- MouseEventArgs.cs
- WebControlsSection.cs
- AssemblyHash.cs
- CodeCatchClauseCollection.cs
- MailAddressCollection.cs
- __ComObject.cs
- MailSettingsSection.cs
- XPathEmptyIterator.cs
- ObjectDataSource.cs
- MessageCredentialType.cs
- GetImportFileNameRequest.cs
- ShaderEffect.cs
- BitmapImage.cs
- ClientSettingsSection.cs
- EditorAttributeInfo.cs
- ChildDocumentBlock.cs
- ProfileInfo.cs
- XsltSettings.cs
- ListCollectionView.cs
- WhitespaceSignificantCollectionAttribute.cs
- FrameworkElement.cs
- SafeBitVector32.cs
- ConnectionsZone.cs
- ConstructorNeedsTagAttribute.cs
- ListDataBindEventArgs.cs
- CqlLexerHelpers.cs
- WebConfigurationHost.cs
- BindingContext.cs
- Pair.cs
- PersonalizationEntry.cs
- XmlBufferReader.cs
- ArraySortHelper.cs
- MessageEncoder.cs
- PropertyEntry.cs
- BaseUriHelper.cs
- ToolStripDropDown.cs
- NonDualMessageSecurityOverHttp.cs
- StringUtil.cs
- GridItemProviderWrapper.cs
- ProjectedWrapper.cs
- ReachVisualSerializer.cs
- WindowsRegion.cs
- SynthesizerStateChangedEventArgs.cs
- StyleCollection.cs
- RequiredFieldValidator.cs
- FileAuthorizationModule.cs
- SmiMetaDataProperty.cs
- HttpModuleCollection.cs
- TypeLoadException.cs
- WebPartEditorApplyVerb.cs
- SettingsPropertyValue.cs
- xmlfixedPageInfo.cs
- ValidationHelper.cs
- TableItemPattern.cs
- CodePrimitiveExpression.cs
- Win32Exception.cs
- BaseTemplateParser.cs
- RandomNumberGenerator.cs
- DesignerEventService.cs
- ChannelSinkStacks.cs
- DataTableReader.cs
- TextSchema.cs
- HtmlTitle.cs
- Int32AnimationBase.cs
- querybuilder.cs
- CategoryAttribute.cs
- TrackingMemoryStream.cs
- CellParaClient.cs
- BrushMappingModeValidation.cs
- CompiledQueryCacheEntry.cs
- Matrix.cs
- Int32Storage.cs
- StickyNoteContentControl.cs