Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Dispatcher / HttpStreamFormatter.cs / 1305376 / HttpStreamFormatter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- #pragma warning disable 1634 // Stops compiler from warning about unknown warnings (for Presharp) namespace System.ServiceModel.Dispatcher { using System; using System.ServiceModel; using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.Collections.Generic; using System.Xml; using System.Runtime.Serialization; using DiagnosticUtility = System.ServiceModel.DiagnosticUtility; using System.IO; using System.Collections.Specialized; using System.Net; class HttpStreamFormatter : IDispatchMessageFormatter, IClientMessageFormatter { string contractName; string contractNs; string operationName; public HttpStreamFormatter(OperationDescription operation) { if (operation == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operation"); } this.operationName = operation.Name; this.contractName = operation.DeclaringContract.Name; this.contractNs = operation.DeclaringContract.Namespace; } public object DeserializeReply(Message message, object[] parameters) { return GetStreamFromMessage(message, false); } public void DeserializeRequest(Message message, object[] parameters) { parameters[0] = GetStreamFromMessage(message, true); } public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result) { Message message = CreateMessageFromStream(result); if (result == null) { SingleBodyParameterMessageFormatter.SuppressReplyEntityBody(message); } return message; } public Message SerializeRequest(MessageVersion messageVersion, object[] parameters) { Message message = CreateMessageFromStream(parameters[0]); if (parameters[0] == null) { SingleBodyParameterMessageFormatter.SuppressRequestEntityBody(message); } return message; } internal static bool IsEmptyMessage(Message message) { return message.IsEmpty; } Message CreateMessageFromStream(object data) { Message result; if (data == null) { result = Message.CreateMessage(MessageVersion.None, (string) null); } else { Stream streamData = data as Stream; if (streamData == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR2.GetString(SR2.ParameterIsNotStreamType, data.GetType(), this.operationName, this.contractName, this.contractNs))); } result = new HttpStreamMessage(streamData); result.Properties[WebBodyFormatMessageProperty.Name] = WebBodyFormatMessageProperty.RawProperty; } return result; } Stream GetStreamFromMessage(Message message, bool isRequest) { object prop; message.Properties.TryGetValue(WebBodyFormatMessageProperty.Name, out prop); WebBodyFormatMessageProperty formatProperty = (prop as WebBodyFormatMessageProperty); if (formatProperty == null) { // GET and DELETE do not go through the encoder if (IsEmptyMessage(message)) { return new MemoryStream(); } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperWarning(new InvalidOperationException(SR2.GetString(SR2.MessageFormatPropertyNotFound, this.operationName, this.contractName, this.contractNs))); } } if (formatProperty.Format != WebContentFormat.Raw) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperWarning(new InvalidOperationException(SR2.GetString(SR2.InvalidHttpMessageFormat, this.operationName, this.contractName, this.contractNs, formatProperty.Format, WebContentFormat.Raw))); } return new StreamFormatter.MessageBodyStream(message, null, null, HttpStreamMessage.StreamElementName, string.Empty, isRequest); } } } // 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
- XmlWrappingReader.cs
- _DigestClient.cs
- SupportingTokenSpecification.cs
- HttpCapabilitiesBase.cs
- ConsoleKeyInfo.cs
- AccessDataSourceView.cs
- XsltLibrary.cs
- RelationshipEndMember.cs
- Repeater.cs
- ScrollProperties.cs
- IssuanceLicense.cs
- DataStorage.cs
- Classification.cs
- AppDomainAttributes.cs
- CounterSample.cs
- DataTemplate.cs
- UnauthorizedWebPart.cs
- TraceSection.cs
- KnownColorTable.cs
- ConfigurationManagerHelperFactory.cs
- WebPartMenu.cs
- DbReferenceCollection.cs
- brushes.cs
- MetadataPropertyvalue.cs
- CurrentChangedEventManager.cs
- GridViewDesigner.cs
- ProcessHostServerConfig.cs
- DataRowView.cs
- Helpers.cs
- ThreadStateException.cs
- DetailsViewPagerRow.cs
- Utils.cs
- BatchServiceHost.cs
- _IPv4Address.cs
- PlainXmlWriter.cs
- ProtocolViolationException.cs
- SpellerError.cs
- RawStylusInputCustomDataList.cs
- Container.cs
- SystemFonts.cs
- WebBrowserContainer.cs
- DesignerEventService.cs
- FilterElement.cs
- ImageButton.cs
- WindowAutomationPeer.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- WindowsFont.cs
- BoundColumn.cs
- WebHttpBindingCollectionElement.cs
- HandlerWithFactory.cs
- FileNotFoundException.cs
- InternalSendMessage.cs
- EncryptedXml.cs
- EntityDataSourceContainerNameConverter.cs
- SqlWorkflowInstanceStore.cs
- EditorZoneBase.cs
- RtfControlWordInfo.cs
- EmptyReadOnlyDictionaryInternal.cs
- TypeUsage.cs
- AtlasWeb.Designer.cs
- PersistenceParticipant.cs
- ProfileSection.cs
- SplitterCancelEvent.cs
- InlineObject.cs
- Double.cs
- GridViewColumnHeader.cs
- ServicePointManager.cs
- Parser.cs
- GridViewCommandEventArgs.cs
- TraceUtility.cs
- WebPartAddingEventArgs.cs
- SecurityTokenResolver.cs
- TraceSection.cs
- IssuedTokenClientBehaviorsElement.cs
- DataPagerFieldCollection.cs
- StyleHelper.cs
- DataTrigger.cs
- EncoderBestFitFallback.cs
- DocumentSequenceHighlightLayer.cs
- ContentIterators.cs
- TreeViewImageKeyConverter.cs
- VerificationAttribute.cs
- RowUpdatingEventArgs.cs
- Function.cs
- ButtonAutomationPeer.cs
- Timeline.cs
- FlagsAttribute.cs
- AmbientLight.cs
- DataViewListener.cs
- DataGridViewCellCollection.cs
- SingleAnimation.cs
- WindowPatternIdentifiers.cs
- Executor.cs
- TemplateNameScope.cs
- EmbossBitmapEffect.cs
- SelectionListDesigner.cs
- TextMetrics.cs
- Image.cs
- SymLanguageVendor.cs
- RadialGradientBrush.cs