Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Channels / WebMessageEncodingBindingElement.cs / 1305376 / WebMessageEncodingBindingElement.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.ServiceModel; using System.Text; using System.Xml; using System.ServiceModel.Administration; using System.ServiceModel.Description; public sealed class WebMessageEncodingBindingElement : MessageEncodingBindingElement, IWsdlExportExtension, IWmiInstanceProvider { WebContentTypeMapper contentTypeMapper; int maxReadPoolSize; int maxWritePoolSize; XmlDictionaryReaderQuotas readerQuotas; Encoding writeEncoding; public WebMessageEncodingBindingElement() : this(TextEncoderDefaults.Encoding) { } public WebMessageEncodingBindingElement(Encoding writeEncoding) { if (writeEncoding == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writeEncoding"); } TextEncoderDefaults.ValidateEncoding(writeEncoding); this.maxReadPoolSize = EncoderDefaults.MaxReadPoolSize; this.maxWritePoolSize = EncoderDefaults.MaxWritePoolSize; this.readerQuotas = new XmlDictionaryReaderQuotas(); EncoderDefaults.ReaderQuotas.CopyTo(this.readerQuotas); this.writeEncoding = writeEncoding; } WebMessageEncodingBindingElement(WebMessageEncodingBindingElement elementToBeCloned) : base(elementToBeCloned) { this.maxReadPoolSize = elementToBeCloned.maxReadPoolSize; this.maxWritePoolSize = elementToBeCloned.maxWritePoolSize; this.readerQuotas = new XmlDictionaryReaderQuotas(); elementToBeCloned.readerQuotas.CopyTo(this.readerQuotas); this.writeEncoding = elementToBeCloned.writeEncoding; this.contentTypeMapper = elementToBeCloned.contentTypeMapper; this.CrossDomainScriptAccessEnabled = elementToBeCloned.CrossDomainScriptAccessEnabled; } public WebContentTypeMapper ContentTypeMapper { get { return contentTypeMapper; } set { contentTypeMapper = value; } } public int MaxReadPoolSize { get { return this.maxReadPoolSize; } set { if (value <= 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR2.GetString(SR2.ValueMustBePositive))); } this.maxReadPoolSize = value; } } public int MaxWritePoolSize { get { return this.maxWritePoolSize; } set { if (value <= 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", value, SR2.GetString(SR2.ValueMustBePositive))); } this.maxWritePoolSize = value; } } public override MessageVersion MessageVersion { get { return MessageVersion.None; } set { if (value == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); } if (value != MessageVersion.None) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("value", SR2.GetString(SR2.JsonOnlySupportsMessageVersionNone)); } } } internal override bool IsWsdlExportable { get { return false; } } public XmlDictionaryReaderQuotas ReaderQuotas { get { return this.readerQuotas; } } public Encoding WriteEncoding { get { return this.writeEncoding; } set { if (value == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); } TextEncoderDefaults.ValidateEncoding(value); this.writeEncoding = value; } } public bool CrossDomainScriptAccessEnabled { get; set; } public override IChannelFactoryBuildChannelFactory (BindingContext context) { return InternalBuildChannelFactory (context); } public override IChannelListener BuildChannelListener (BindingContext context) { return InternalBuildChannelListener (context); } public override bool CanBuildChannelListener (BindingContext context) { return InternalCanBuildChannelListener (context); } public override BindingElement Clone() { return new WebMessageEncodingBindingElement(this); } public override MessageEncoderFactory CreateMessageEncoderFactory() { return new WebMessageEncoderFactory(this.WriteEncoding, this.MaxReadPoolSize, this.MaxWritePoolSize, this.ReaderQuotas, this.ContentTypeMapper, this.CrossDomainScriptAccessEnabled); } public override T GetProperty (BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (typeof(T) == typeof(XmlDictionaryReaderQuotas)) { return (T)(object) this.readerQuotas; } else { return base.GetProperty (context); } } void IWmiInstanceProvider.FillInstance(IWmiInstance wmiInstance) { wmiInstance.SetProperty(AdministrationStrings.MessageVersion, this.MessageVersion.ToString()); wmiInstance.SetProperty(AdministrationStrings.Encoding, this.writeEncoding.WebName); wmiInstance.SetProperty(AdministrationStrings.MaxReadPoolSize, this.maxReadPoolSize); wmiInstance.SetProperty(AdministrationStrings.MaxWritePoolSize, this.maxWritePoolSize); if (this.ReaderQuotas != null) { IWmiInstance readerQuotasInstance = wmiInstance.NewInstance(AdministrationStrings.XmlDictionaryReaderQuotas); readerQuotasInstance.SetProperty(AdministrationStrings.MaxArrayLength, this.readerQuotas.MaxArrayLength); readerQuotasInstance.SetProperty(AdministrationStrings.MaxBytesPerRead, this.readerQuotas.MaxBytesPerRead); readerQuotasInstance.SetProperty(AdministrationStrings.MaxDepth, this.readerQuotas.MaxDepth); readerQuotasInstance.SetProperty(AdministrationStrings.MaxNameTableCharCount, this.readerQuotas.MaxNameTableCharCount); readerQuotasInstance.SetProperty(AdministrationStrings.MaxStringContentLength, this.readerQuotas.MaxStringContentLength); wmiInstance.SetProperty(AdministrationStrings.ReaderQuotas, readerQuotasInstance); } } string IWmiInstanceProvider.GetInstanceType() { return typeof(WebMessageEncodingBindingElement).Name; } void IWsdlExportExtension.ExportContract(WsdlExporter exporter, WsdlContractConversionContext context) { } void IWsdlExportExtension.ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } SoapHelper.SetSoapVersion(context, exporter, this.MessageVersion.Envelope); } internal override bool CheckEncodingVersion(EnvelopeVersion version) { return MessageVersion.Envelope == version; } internal override bool IsMatch(BindingElement b) { if (!base.IsMatch(b)) { return false; } WebMessageEncodingBindingElement other = b as WebMessageEncodingBindingElement; if (other == null) { return false; } if (this.maxReadPoolSize != other.MaxReadPoolSize) { return false; } if (this.maxWritePoolSize != other.MaxWritePoolSize) { return false; } // compare XmlDictionaryReaderQuotas if (this.readerQuotas.MaxStringContentLength != other.ReaderQuotas.MaxStringContentLength) { return false; } if (this.readerQuotas.MaxArrayLength != other.ReaderQuotas.MaxArrayLength) { return false; } if (this.readerQuotas.MaxBytesPerRead != other.ReaderQuotas.MaxBytesPerRead) { return false; } if (this.readerQuotas.MaxDepth != other.ReaderQuotas.MaxDepth) { return false; } if (this.readerQuotas.MaxNameTableCharCount != other.ReaderQuotas.MaxNameTableCharCount) { return false; } if (this.WriteEncoding.EncodingName != other.WriteEncoding.EncodingName) { return false; } if (!this.MessageVersion.IsMatch(other.MessageVersion)) { return false; } if (this.ContentTypeMapper != other.ContentTypeMapper) { return false; } return true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlNode.cs
- ValueConversionAttribute.cs
- ArrayTypeMismatchException.cs
- GenericTypeParameterBuilder.cs
- DesigntimeLicenseContextSerializer.cs
- HostProtectionException.cs
- XmlBoundElement.cs
- RtfToken.cs
- _SpnDictionary.cs
- EntityWrapperFactory.cs
- OleDbCommand.cs
- CompositeTypefaceMetrics.cs
- TreeViewImageIndexConverter.cs
- DataColumn.cs
- ColorTransformHelper.cs
- PlaceHolder.cs
- OleServicesContext.cs
- ArithmeticException.cs
- AudioFormatConverter.cs
- ResourceWriter.cs
- ExtensionSimplifierMarkupObject.cs
- ToolTipService.cs
- EditableLabelControl.cs
- DataServiceQueryOfT.cs
- HelpEvent.cs
- CodePageEncoding.cs
- TextFormatter.cs
- StyleModeStack.cs
- AccessKeyManager.cs
- ChangeConflicts.cs
- EncodingDataItem.cs
- FixedSOMContainer.cs
- StreamGeometryContext.cs
- WpfXamlType.cs
- IndexedGlyphRun.cs
- ThreadStaticAttribute.cs
- DebugHandleTracker.cs
- InstancePersistence.cs
- RegexTree.cs
- LazyTextWriterCreator.cs
- SystemInfo.cs
- ConversionContext.cs
- WindowsScroll.cs
- HMACRIPEMD160.cs
- XslTransform.cs
- MenuRendererClassic.cs
- BehaviorEditorPart.cs
- WFItemsToSpacerVisibility.cs
- ActivitiesCollection.cs
- WFItemsToSpacerVisibility.cs
- ControlAdapter.cs
- EntityModelBuildProvider.cs
- DateTimeConverter.cs
- Converter.cs
- ASCIIEncoding.cs
- COM2ExtendedUITypeEditor.cs
- Events.cs
- CustomCategoryAttribute.cs
- Parser.cs
- DateBoldEvent.cs
- PlainXmlWriter.cs
- Grant.cs
- ExpandCollapsePattern.cs
- Int32CollectionConverter.cs
- ContractMapping.cs
- XPathSelfQuery.cs
- DrawingCollection.cs
- DefaultBinder.cs
- PageScaling.cs
- AssociationProvider.cs
- PropertyEmitterBase.cs
- SrgsRuleRef.cs
- SemaphoreSecurity.cs
- PipelineModuleStepContainer.cs
- DataBindingCollectionEditor.cs
- EventDescriptorCollection.cs
- CallSiteOps.cs
- ColorTransformHelper.cs
- ComponentEvent.cs
- MetadataPropertyAttribute.cs
- GenericTypeParameterBuilder.cs
- ProfileEventArgs.cs
- ManualResetEvent.cs
- XmlElementAttribute.cs
- CompilerLocalReference.cs
- FileUtil.cs
- Knowncolors.cs
- Internal.cs
- BooleanExpr.cs
- DataGridViewColumnTypePicker.cs
- HelpProvider.cs
- SingleKeyFrameCollection.cs
- TypeConverters.cs
- XmlTypeAttribute.cs
- XmlEntityReference.cs
- TextBreakpoint.cs
- ScriptingRoleServiceSection.cs
- MessagePropertyAttribute.cs
- OracleEncoding.cs
- ConfigurationProperty.cs