Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Description / ConfigWriter.cs / 1 / ConfigWriter.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Description { using System; using System.ServiceModel.Channels; using System.Configuration; using System.Collections.Generic; using System.ServiceModel; using System.ServiceModel.Configuration; using System.ServiceModel.Diagnostics; internal class ConfigWriter { readonly DictionarybindingTable; readonly BindingsSection bindingsSection; readonly ChannelEndpointElementCollection channels; readonly Configuration config; internal ConfigWriter(Configuration configuration) { this.bindingTable = new Dictionary (); this.bindingsSection = BindingsSection.GetSection(configuration); ServiceModelSectionGroup serviceModelSectionGroup = ServiceModelSectionGroup.GetSectionGroup(configuration); this.channels = serviceModelSectionGroup.Client.Endpoints; this.config = configuration; } internal ChannelEndpointElement WriteChannelDescription(ServiceEndpoint endpoint, string typeName) { ChannelEndpointElement channelElement = null; // Create Binding BindingDictionaryValue bindingDV = CreateBindingConfig(endpoint.Binding); channelElement = new ChannelEndpointElement(endpoint.Address, typeName); // [....]: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm // does not touch ASCII names, a name that looks like encoded name will not roundtrip(Example: "_x002C_" will turned into ",") channelElement.Name = NamingHelper.GetUniqueName(NamingHelper.CodeName(endpoint.Name), this.CheckIfChannelNameInUse, null); channelElement.BindingConfiguration = bindingDV.BindingName; channelElement.Binding = bindingDV.BindingSectionName; channels.Add(channelElement); return channelElement; } internal void WriteBinding(Binding binding, out string bindingSectionName, out string configurationName) { BindingDictionaryValue result = CreateBindingConfig(binding); configurationName = result.BindingName; bindingSectionName = result.BindingSectionName; } BindingDictionaryValue CreateBindingConfig(Binding binding) { BindingDictionaryValue bindingDV; if (!bindingTable.TryGetValue(binding, out bindingDV)) { // [....]: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm // does not touch ASCII names, a name that looks like encoded name will not roundtrip(Example: "_x002C_" will turned into ",") string bindingName = NamingHelper.GetUniqueName(NamingHelper.CodeName(binding.Name), this.CheckIfBindingNameInUse, null); string bindingSectionName; if (!BindingsSection.TryAdd(bindingName, binding, config, out bindingSectionName)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.ConfigBindingCannotBeConfigured), "endpoint.Binding")); bindingDV = new BindingDictionaryValue(bindingName, bindingSectionName); bindingTable.Add(binding, bindingDV); } return bindingDV; } bool CheckIfBindingNameInUse(string name, object nameCollection) { foreach (BindingCollectionElement bindingCollectionElement in this.bindingsSection.BindingCollections) if (bindingCollectionElement.ContainsKey(name)) return true; return false; } bool CheckIfChannelNameInUse(string name, object namingCollection) { foreach (ChannelEndpointElement element in this.channels) if (element.Name == name) return true; return false; } sealed class BindingDictionaryValue { public readonly string BindingName; public readonly string BindingSectionName; public BindingDictionaryValue(string bindingName, string bindingSectionName) { this.BindingName = bindingName; this.BindingSectionName = bindingSectionName; } } } } // 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
- EnumValAlphaComparer.cs
- ErrorStyle.cs
- SemanticResultKey.cs
- DataTemplate.cs
- SettingsContext.cs
- DataGridTable.cs
- ContainerActivationHelper.cs
- ApplicationFileParser.cs
- DBSchemaTable.cs
- DelegateBodyWriter.cs
- ErrorProvider.cs
- ToolBarButton.cs
- StrongNamePublicKeyBlob.cs
- PreDigestedSignedInfo.cs
- TraceContextEventArgs.cs
- FormCollection.cs
- mda.cs
- __ComObject.cs
- OracleDataAdapter.cs
- QilChoice.cs
- DataServiceQuery.cs
- ConfigurationValues.cs
- IApplicationTrustManager.cs
- GridErrorDlg.cs
- ConnectionManagementElement.cs
- DependencyPropertyDescriptor.cs
- ResourceBinder.cs
- IdentityModelDictionary.cs
- PersianCalendar.cs
- SqlRowUpdatedEvent.cs
- SmtpLoginAuthenticationModule.cs
- X509CertificateCollection.cs
- MediaContext.cs
- Soap.cs
- VisualProxy.cs
- SqlDataSourceSelectingEventArgs.cs
- CalendarKeyboardHelper.cs
- ConfigurationErrorsException.cs
- DrawingGroupDrawingContext.cs
- TranslateTransform3D.cs
- BasicKeyConstraint.cs
- DataGridViewColumnHeaderCell.cs
- TabControl.cs
- SqlMethodAttribute.cs
- ConfigXmlSignificantWhitespace.cs
- CheckBoxStandardAdapter.cs
- DataServiceQueryContinuation.cs
- StoragePropertyMapping.cs
- ClrProviderManifest.cs
- Point.cs
- XhtmlTextWriter.cs
- WebBrowsableAttribute.cs
- FontResourceCache.cs
- LockCookie.cs
- CodeMethodInvokeExpression.cs
- FormDocumentDesigner.cs
- VideoDrawing.cs
- RawStylusInputCustomDataList.cs
- RawAppCommandInputReport.cs
- DataException.cs
- ListItemViewAttribute.cs
- PassportAuthenticationEventArgs.cs
- Lease.cs
- Int32Animation.cs
- InteropDesigner.xaml.cs
- EdmRelationshipRoleAttribute.cs
- BinaryFormatterWriter.cs
- PeerCollaborationPermission.cs
- TreeViewEvent.cs
- ServerValidateEventArgs.cs
- TiffBitmapDecoder.cs
- DataBindingExpressionBuilder.cs
- RegexWriter.cs
- DynamicRenderer.cs
- FilterableAttribute.cs
- WindowsGraphics.cs
- DataGridGeneralPage.cs
- FontFamilyConverter.cs
- ExtentKey.cs
- ChangeConflicts.cs
- _ListenerResponseStream.cs
- UrlUtility.cs
- WebPartMenu.cs
- HostingPreferredMapPath.cs
- ImageAnimator.cs
- _SafeNetHandles.cs
- NewArrayExpression.cs
- SlotInfo.cs
- PartialCachingAttribute.cs
- FixedTextContainer.cs
- OleDbParameter.cs
- SqlGatherConsumedAliases.cs
- TextTreeObjectNode.cs
- EncryptedXml.cs
- WizardSideBarListControlItemEventArgs.cs
- PageCodeDomTreeGenerator.cs
- EventLogger.cs
- SqlDataSourceFilteringEventArgs.cs
- SystemParameters.cs
- OdbcErrorCollection.cs