Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Dispatcher / HttpStreamFormatter.cs / 1 / 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ScrollableControl.cs
- SqlProvider.cs
- FileUpload.cs
- SystemIcmpV4Statistics.cs
- WebEvents.cs
- followingsibling.cs
- ConfigurationLockCollection.cs
- IdentityReference.cs
- UserControlBuildProvider.cs
- OpCodes.cs
- wgx_exports.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- MouseActionConverter.cs
- StrongNameMembershipCondition.cs
- ProjectedWrapper.cs
- MouseDevice.cs
- Inline.cs
- BroadcastEventHelper.cs
- CodeMemberField.cs
- FlowNode.cs
- XmlSchemaGroup.cs
- ProviderIncompatibleException.cs
- ResourceKey.cs
- ByteFacetDescriptionElement.cs
- ForeignConstraint.cs
- DefaultSettingsSection.cs
- StoreContentChangedEventArgs.cs
- OperationFormatUse.cs
- OptimizedTemplateContent.cs
- UnknownWrapper.cs
- Processor.cs
- SharedStream.cs
- DbProviderFactories.cs
- DtdParser.cs
- ApplicationInterop.cs
- HashAlgorithm.cs
- CatalogPartChrome.cs
- XmlBindingWorker.cs
- TablePattern.cs
- XmlUtil.cs
- _TLSstream.cs
- MethodSet.cs
- ElementHostAutomationPeer.cs
- RC2.cs
- ResourceAssociationSet.cs
- MessageTransmitTraceRecord.cs
- ImageClickEventArgs.cs
- RichTextBoxAutomationPeer.cs
- TableLayoutPanelCellPosition.cs
- DynamicDataManager.cs
- SchemaReference.cs
- BooleanConverter.cs
- SymbolDocumentInfo.cs
- InstanceKey.cs
- InputBinding.cs
- TextEditorTyping.cs
- SqlDependencyListener.cs
- BufferedResponseStream.cs
- AlternateViewCollection.cs
- ControlBuilder.cs
- NullableBoolConverter.cs
- XamlTemplateSerializer.cs
- ChannelCredentials.cs
- DictionaryMarkupSerializer.cs
- CapabilitiesPattern.cs
- TextParagraphProperties.cs
- WebPartActionVerb.cs
- WhileDesigner.xaml.cs
- Configuration.cs
- ClientData.cs
- SizeAnimationUsingKeyFrames.cs
- LinqDataSourceContextEventArgs.cs
- OrderablePartitioner.cs
- LineProperties.cs
- TypeBinaryExpression.cs
- WindowsFormsHostAutomationPeer.cs
- RecommendedAsConfigurableAttribute.cs
- FileEnumerator.cs
- MonitoringDescriptionAttribute.cs
- BaseTemplateCodeDomTreeGenerator.cs
- COM2FontConverter.cs
- AspCompat.cs
- ServicePointManager.cs
- Viewport2DVisual3D.cs
- streamingZipPartStream.cs
- MenuBase.cs
- HttpPostProtocolImporter.cs
- CopyNodeSetAction.cs
- TileBrush.cs
- TableColumn.cs
- HtmlElement.cs
- StorageComplexTypeMapping.cs
- EventSinkHelperWriter.cs
- MD5.cs
- OdbcException.cs
- ConversionValidationRule.cs
- _NtlmClient.cs
- util.cs
- ColorKeyFrameCollection.cs
- Types.cs