Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Channels / WebMessageEncodingBindingElement.cs / 1 / 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; } 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)); } } } 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 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); } 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- KeySplineConverter.cs
- QueueProcessor.cs
- RoleServiceManager.cs
- CacheMemory.cs
- StyleTypedPropertyAttribute.cs
- __Filters.cs
- PenThreadPool.cs
- MaskedTextBoxDesignerActionList.cs
- AssemblyFilter.cs
- FastEncoder.cs
- EllipticalNodeOperations.cs
- DispatchChannelSink.cs
- RadioButtonRenderer.cs
- DbParameterHelper.cs
- InternalResources.cs
- DbConnectionStringBuilder.cs
- PathSegment.cs
- ThreadStateException.cs
- ConfigXmlAttribute.cs
- ButtonBaseDesigner.cs
- SettingsPropertyValue.cs
- ResourceDescriptionAttribute.cs
- DiagnosticsConfiguration.cs
- DataBoundLiteralControl.cs
- TextShapeableCharacters.cs
- ProviderUtil.cs
- FrameworkContentElement.cs
- TaskHelper.cs
- ToolStripRenderEventArgs.cs
- CalendarDay.cs
- SQLRoleProvider.cs
- AsyncOperation.cs
- CustomCredentialPolicy.cs
- SqlDataAdapter.cs
- HtmlInputHidden.cs
- RayHitTestParameters.cs
- TraversalRequest.cs
- BindMarkupExtensionSerializer.cs
- TextTrailingWordEllipsis.cs
- ValidatorCollection.cs
- DataPagerField.cs
- Line.cs
- TimelineClockCollection.cs
- NavigatingCancelEventArgs.cs
- DescendentsWalker.cs
- DataGridViewComboBoxColumn.cs
- ContextStack.cs
- CharacterMetricsDictionary.cs
- LabelLiteral.cs
- DataGridComboBoxColumn.cs
- SqlTrackingWorkflowInstance.cs
- WindowsRichEdit.cs
- AspNetHostingPermission.cs
- DetailsViewInsertedEventArgs.cs
- XmlILModule.cs
- AdapterUtil.cs
- SafeEventLogWriteHandle.cs
- MdImport.cs
- contentDescriptor.cs
- PathGeometry.cs
- safex509handles.cs
- BufferBuilder.cs
- WindowsAuthenticationModule.cs
- LinkDescriptor.cs
- DataServices.cs
- counter.cs
- LogRestartAreaEnumerator.cs
- DefaultTextStoreTextComposition.cs
- TableCellCollection.cs
- _NestedMultipleAsyncResult.cs
- FormsAuthenticationCredentials.cs
- ColumnResizeUndoUnit.cs
- XamlLoadErrorInfo.cs
- InstanceData.cs
- TransactionManagerProxy.cs
- XmlSchemaObjectTable.cs
- GacUtil.cs
- BasicKeyConstraint.cs
- ProjectionCamera.cs
- DockPatternIdentifiers.cs
- CompositeActivityDesigner.cs
- WebScriptMetadataMessage.cs
- TableLayoutColumnStyleCollection.cs
- SendKeys.cs
- StructuredTypeEmitter.cs
- WorkflowRuntimeSection.cs
- FrameworkElementAutomationPeer.cs
- __TransparentProxy.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- ImpersonationContext.cs
- RefreshPropertiesAttribute.cs
- ConfigurationSectionHelper.cs
- UnionExpr.cs
- SspiSafeHandles.cs
- OdbcEnvironment.cs
- ComponentConverter.cs
- Decoder.cs
- AuthorizationRuleCollection.cs
- CellIdBoolean.cs
- RelationshipManager.cs