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
- ParameterRetriever.cs
- UdpDiscoveryEndpointProvider.cs
- SoapSchemaMember.cs
- StorageEntitySetMapping.cs
- UpdateRecord.cs
- BuildProviderCollection.cs
- SplashScreenNativeMethods.cs
- ClientConfigurationSystem.cs
- X509Utils.cs
- OperationFormatStyle.cs
- DictionarySectionHandler.cs
- WriteFileContext.cs
- SapiAttributeParser.cs
- NativeMethods.cs
- InterleavedZipPartStream.cs
- StringCollectionEditor.cs
- NavigationProperty.cs
- ThicknessConverter.cs
- DetailsViewPagerRow.cs
- DetailsViewRowCollection.cs
- FileChangesMonitor.cs
- Quad.cs
- DataContractJsonSerializerOperationFormatter.cs
- TreeNodeSelectionProcessor.cs
- ResourceWriter.cs
- ParentUndoUnit.cs
- Executor.cs
- RegisteredHiddenField.cs
- DetailsViewUpdateEventArgs.cs
- HttpHandlersSection.cs
- GridViewCommandEventArgs.cs
- HtmlControlPersistable.cs
- BrowsableAttribute.cs
- RawStylusSystemGestureInputReport.cs
- ADRoleFactoryConfiguration.cs
- ListParagraph.cs
- GlyphManager.cs
- ZipPackagePart.cs
- AmbiguousMatchException.cs
- WebPartConnectionsCancelVerb.cs
- DataService.cs
- Label.cs
- AssemblySettingAttributes.cs
- QilName.cs
- IisTraceWebEventProvider.cs
- CaretElement.cs
- GlobalizationAssembly.cs
- RecognizedWordUnit.cs
- BufferedGraphics.cs
- XmlDataSource.cs
- SafeBitVector32.cs
- NTAccount.cs
- RadioButtonBaseAdapter.cs
- RecordConverter.cs
- RoutingBehavior.cs
- Run.cs
- EndpointDiscoveryElement.cs
- TypeLoadException.cs
- FormViewPagerRow.cs
- FieldMetadata.cs
- HttpCapabilitiesBase.cs
- SymDocumentType.cs
- OleDbWrapper.cs
- NullRuntimeConfig.cs
- ReadOnlyHierarchicalDataSourceView.cs
- StatusBarDrawItemEvent.cs
- TableRow.cs
- ListBindingHelper.cs
- DynamicPropertyReader.cs
- SQLConvert.cs
- ValuePattern.cs
- SmtpTransport.cs
- Triplet.cs
- ISAPIRuntime.cs
- SiteMapDataSourceView.cs
- DbTransaction.cs
- CalendarDataBindingHandler.cs
- TablePattern.cs
- DynamicResourceExtension.cs
- ExpressionEvaluator.cs
- TcpProcessProtocolHandler.cs
- SafeNativeMethods.cs
- DataGridViewImageCell.cs
- Win32.cs
- BaseTemplateParser.cs
- ColorConverter.cs
- ImageCodecInfoPrivate.cs
- FrameworkPropertyMetadata.cs
- FieldAccessException.cs
- DataGridViewRowHeaderCell.cs
- LinkClickEvent.cs
- Codec.cs
- sortedlist.cs
- ItemChangedEventArgs.cs
- XmlCompatibilityReader.cs
- KoreanLunisolarCalendar.cs
- RequestCache.cs
- XmlSchemaExternal.cs
- CompressStream.cs
- ImageKeyConverter.cs