Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Channels / WebScriptMetadataMessageEncoderFactory.cs / 1 / WebScriptMetadataMessageEncoderFactory.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Globalization; using System.IO; using System.Net.Mime; using System.ServiceModel.Diagnostics; using System.Text; using System.Xml; class WebScriptMetadataMessageEncoderFactory : MessageEncoderFactory { const string applicationJavaScriptMediaType = "application/x-javascript"; WebScriptMetadataMessageEncoder messageEncoder; public WebScriptMetadataMessageEncoderFactory(XmlDictionaryReaderQuotas quotas) { messageEncoder = new WebScriptMetadataMessageEncoder(quotas); } public override MessageEncoder Encoder { get { return messageEncoder; } } public override MessageVersion MessageVersion { get { return messageEncoder.MessageVersion; } } class WebScriptMetadataMessageEncoder : MessageEncoder { static UTF8Encoding UTF8EncodingWithoutByteOrderMark = new UTF8Encoding(false); string contentType; MessageEncoder innerReadMessageEncoder; string mediaType; XmlDictionaryReaderQuotas readerQuotas; public WebScriptMetadataMessageEncoder(XmlDictionaryReaderQuotas quotas) { this.readerQuotas = new XmlDictionaryReaderQuotas(); quotas.CopyTo(this.readerQuotas); this.mediaType = this.contentType = applicationJavaScriptMediaType; this.innerReadMessageEncoder = new TextMessageEncodingBindingElement(MessageVersion.None, Encoding.UTF8).CreateMessageEncoderFactory().Encoder; } public override string ContentType { get { return contentType; } } public override string MediaType { get { return mediaType; } } public override MessageVersion MessageVersion { get { return MessageVersion.None; } } public override bool IsContentTypeSupported(string contentType) { return innerReadMessageEncoder.IsContentTypeSupported(contentType); } public override Message ReadMessage(ArraySegmentbuffer, BufferManager bufferManager, string contentType) { return innerReadMessageEncoder.ReadMessage(buffer, bufferManager, contentType); } public override Message ReadMessage(Stream stream, int maxSizeOfHeaders, string contentType) { return innerReadMessageEncoder.ReadMessage(stream, maxSizeOfHeaders, contentType); } public override ArraySegment WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset) { if (message == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("message")); } if (bufferManager == null) { throw TraceUtility.ThrowHelperError(new ArgumentNullException("bufferManager"), message); } if (maxMessageSize < 0) { throw TraceUtility.ThrowHelperError(new ArgumentOutOfRangeException("maxMessageSize", maxMessageSize, SR2.GetString(SR2.ValueMustBeNonNegative)), message); } if (messageOffset < 0 || messageOffset > maxMessageSize) { throw TraceUtility.ThrowHelperError(new ArgumentOutOfRangeException("messageOffset", messageOffset, SR2.GetString(SR2.JsonValueMustBeInRange, 0, maxMessageSize)), message); } ThrowIfMismatchedMessageVersion(message); message.Properties.Encoder = this; BufferedMessageWriter messageWriter = new WebScriptMetadataBufferedMessageWriter(this); ArraySegment messageData = messageWriter.WriteMessage(message, bufferManager, messageOffset, maxMessageSize); if (MessageLogger.LogMessagesAtTransportLevel) { MessageLogger.LogMessage(ref message, MessageLoggingSource.TransportSend); } return messageData; } public override void WriteMessage(Message message, Stream stream) { if (message == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("message")); } if (stream == null) { throw TraceUtility.ThrowHelperError(new ArgumentNullException("stream"), message); } ThrowIfMismatchedMessageVersion(message); message.Properties.Encoder = this; XmlDictionaryWriter xmlWriter = CreateWriter(stream); xmlWriter.WriteStartDocument(); message.WriteMessage(xmlWriter); xmlWriter.WriteEndDocument(); xmlWriter.Flush(); xmlWriter.Close(); if (MessageLogger.LogMessagesAtTransportLevel) { MessageLogger.LogMessage(ref message, MessageLoggingSource.TransportSend); } } XmlDictionaryWriter CreateWriter(Stream stream) { XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; settings.Encoding = UTF8EncodingWithoutByteOrderMark; XmlWriter writer = XmlWriter.Create(stream, settings); return XmlDictionaryWriter.CreateDictionaryWriter(writer); } class WebScriptMetadataBufferedMessageWriter : BufferedMessageWriter { WebScriptMetadataMessageEncoder messageEncoder; public WebScriptMetadataBufferedMessageWriter(WebScriptMetadataMessageEncoder messageEncoder) { this.messageEncoder = messageEncoder; } protected override void OnWriteEndMessage(XmlDictionaryWriter writer) { } protected override void OnWriteStartMessage(XmlDictionaryWriter writer) { } protected override void ReturnXmlWriter(XmlDictionaryWriter writer) { writer.Close(); } protected override XmlDictionaryWriter TakeXmlWriter(Stream stream) { return messageEncoder.CreateWriter(stream); } } } } } // 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
- BindingMAnagerBase.cs
- RichTextBoxContextMenu.cs
- ImageSourceValueSerializer.cs
- StrokeCollection2.cs
- PeerSecurityHelpers.cs
- SpecularMaterial.cs
- GroupQuery.cs
- XmlILOptimizerVisitor.cs
- OletxVolatileEnlistment.cs
- EventHandlersDesigner.cs
- SplitContainer.cs
- filewebresponse.cs
- ListViewInsertedEventArgs.cs
- DiscoveryDocumentReference.cs
- ISessionStateStore.cs
- StrokeNodeEnumerator.cs
- LayoutManager.cs
- SmiEventSink_Default.cs
- EndpointBehaviorElementCollection.cs
- UndirectedGraph.cs
- Identity.cs
- PrintPreviewGraphics.cs
- CustomWebEventKey.cs
- EncoderParameter.cs
- CompositeTypefaceMetrics.cs
- OpenFileDialog.cs
- NodeFunctions.cs
- DataRowExtensions.cs
- CryptoConfig.cs
- PolicyLevel.cs
- SqlBulkCopyColumnMapping.cs
- RecognizedPhrase.cs
- ValidationRuleCollection.cs
- ADConnectionHelper.cs
- Privilege.cs
- _SingleItemRequestCache.cs
- SolidBrush.cs
- FlowDocumentView.cs
- NTAccount.cs
- AnimationException.cs
- EntityType.cs
- SchemaImporterExtensionsSection.cs
- URIFormatException.cs
- XsltArgumentList.cs
- TemplateParser.cs
- _NestedMultipleAsyncResult.cs
- SeparatorAutomationPeer.cs
- IssuanceLicense.cs
- Guid.cs
- AbstractSvcMapFileLoader.cs
- XamlReader.cs
- categoryentry.cs
- BatchServiceHost.cs
- DeferrableContent.cs
- CodeSubDirectoriesCollection.cs
- WebPermission.cs
- WithStatement.cs
- ObjectStateEntryDbDataRecord.cs
- DisplayInformation.cs
- FactoryMaker.cs
- WindowsEditBoxRange.cs
- ToolStripItemImageRenderEventArgs.cs
- ProbeRequestResponseAsyncResult.cs
- XPathSelectionIterator.cs
- PageParserFilter.cs
- DictionaryBase.cs
- ContextMarshalException.cs
- HostVisual.cs
- Crc32Helper.cs
- VisualTreeHelper.cs
- FileVersion.cs
- ExpressionPrinter.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ListBoxItem.cs
- TypeFieldSchema.cs
- HScrollProperties.cs
- WebPartUserCapability.cs
- ConfigXmlSignificantWhitespace.cs
- DesignerActionListCollection.cs
- WorkflowEnvironment.cs
- Byte.cs
- __Error.cs
- ConfigurationProperty.cs
- CultureInfoConverter.cs
- ClientFormsIdentity.cs
- TextContainerChangedEventArgs.cs
- CodeAssignStatement.cs
- TCPListener.cs
- GridViewEditEventArgs.cs
- TextRangeBase.cs
- X509Utils.cs
- LongValidator.cs
- TranslateTransform3D.cs
- WpfWebRequestHelper.cs
- NodeLabelEditEvent.cs
- RegularExpressionValidator.cs
- LayoutInformation.cs
- SoapFault.cs
- SelectionEditor.cs
- RegistryKey.cs