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
- SoundPlayer.cs
- CompensateDesigner.cs
- NumberFunctions.cs
- WebPartAddingEventArgs.cs
- CheckBoxRenderer.cs
- XamlGridLengthSerializer.cs
- FunctionParameter.cs
- Type.cs
- ListView.cs
- QualificationDataAttribute.cs
- BitVector32.cs
- WindowsRebar.cs
- WebPartEditorOkVerb.cs
- EventLogPermission.cs
- XmlSchemaCompilationSettings.cs
- _AutoWebProxyScriptEngine.cs
- UrlPath.cs
- WebPartDisplayModeCollection.cs
- TextEffectResolver.cs
- SystemTcpStatistics.cs
- TargetControlTypeCache.cs
- SessionIDManager.cs
- AuthenticationException.cs
- VScrollBar.cs
- MachineKeyConverter.cs
- HtmlInputSubmit.cs
- SystemInformation.cs
- UnsafeNativeMethods.cs
- CodeEventReferenceExpression.cs
- ZipFileInfo.cs
- future.cs
- SmtpNegotiateAuthenticationModule.cs
- SqlTrackingQuery.cs
- CompatibleComparer.cs
- Nullable.cs
- AsymmetricAlgorithm.cs
- TextServicesHost.cs
- IndexingContentUnit.cs
- documentsequencetextview.cs
- NumberFormatInfo.cs
- BamlResourceContent.cs
- FocusWithinProperty.cs
- BuilderInfo.cs
- IFormattable.cs
- ListComponentEditorPage.cs
- ResourceCategoryAttribute.cs
- PixelFormatConverter.cs
- DateTimeFormatInfoScanner.cs
- COAUTHINFO.cs
- Matrix3DStack.cs
- ScriptingProfileServiceSection.cs
- WindowsToolbar.cs
- NativeMethodsOther.cs
- HyperLink.cs
- ChildrenQuery.cs
- TypeResolver.cs
- XmlParserContext.cs
- DeviceContexts.cs
- DrawListViewSubItemEventArgs.cs
- AbsoluteQuery.cs
- DispatchWrapper.cs
- ItemChangedEventArgs.cs
- SessionPageStatePersister.cs
- DropSource.cs
- SecurityTokenAuthenticator.cs
- SqlTypesSchemaImporter.cs
- OutputCacheModule.cs
- OverrideMode.cs
- WorkflowDesigner.cs
- CodeTypeDelegate.cs
- WebPageTraceListener.cs
- Query.cs
- ParameterSubsegment.cs
- Assert.cs
- RuleSet.cs
- ToolTipService.cs
- RequestSecurityTokenResponse.cs
- GeometryCombineModeValidation.cs
- serverconfig.cs
- HelpInfo.cs
- DoubleAnimationUsingPath.cs
- WebPartUserCapability.cs
- DoubleLinkList.cs
- Color.cs
- SqlError.cs
- DiagnosticTrace.cs
- _ScatterGatherBuffers.cs
- PropertyManager.cs
- PropertyItemInternal.cs
- Serializer.cs
- XmlCharCheckingWriter.cs
- updateconfighost.cs
- RewritingProcessor.cs
- AnnotationComponentManager.cs
- DbQueryCommandTree.cs
- ImpersonationContext.cs
- CompilerWrapper.cs
- BooleanExpr.cs
- SafeLibraryHandle.cs
- CodeGen.cs