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
- TemplateContentLoader.cs
- XmlSchemaDatatype.cs
- MenuItemBindingCollection.cs
- ClientConfigurationHost.cs
- VarRefManager.cs
- DataTableNewRowEvent.cs
- TouchPoint.cs
- input.cs
- Shared.cs
- InstanceNameConverter.cs
- FrameworkPropertyMetadata.cs
- DockAndAnchorLayout.cs
- WebPartConnectionsCancelEventArgs.cs
- UnmanagedMarshal.cs
- CompModSwitches.cs
- DropShadowEffect.cs
- HwndHostAutomationPeer.cs
- StatusBarPanel.cs
- Propagator.cs
- Rights.cs
- WorkflowDurableInstance.cs
- UrlRoutingHandler.cs
- UnsafeNativeMethods.cs
- MethodBuilderInstantiation.cs
- DataGridViewAutoSizeModeEventArgs.cs
- WindowsTreeView.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- SrgsGrammarCompiler.cs
- MemberInfoSerializationHolder.cs
- CachedPathData.cs
- ClonableStack.cs
- MsmqProcessProtocolHandler.cs
- CollectionType.cs
- PingOptions.cs
- PeerCredential.cs
- MessagePropertyDescriptionCollection.cs
- _DisconnectOverlappedAsyncResult.cs
- TableStyle.cs
- MessageQueueEnumerator.cs
- ScrollChrome.cs
- MemberInfoSerializationHolder.cs
- ViewStateException.cs
- PlatformCulture.cs
- Journal.cs
- XmlArrayItemAttribute.cs
- CodeThrowExceptionStatement.cs
- AppearanceEditorPart.cs
- OdbcConnectionOpen.cs
- PolyBezierSegmentFigureLogic.cs
- Nodes.cs
- EdmComplexPropertyAttribute.cs
- EntryWrittenEventArgs.cs
- TemplateComponentConnector.cs
- LineInfo.cs
- InputReportEventArgs.cs
- Tracer.cs
- StylusSystemGestureEventArgs.cs
- EtwTrace.cs
- ScaleTransform3D.cs
- DataSourceExpression.cs
- XmlAutoDetectWriter.cs
- OptimalBreakSession.cs
- UserPreferenceChangedEventArgs.cs
- Int32AnimationBase.cs
- Light.cs
- ForeignConstraint.cs
- DataGridViewHitTestInfo.cs
- BitmapFrameEncode.cs
- Renderer.cs
- SystemKeyConverter.cs
- GPPOINT.cs
- WebServiceFaultDesigner.cs
- BuilderInfo.cs
- ToolStripDesignerAvailabilityAttribute.cs
- XPathScanner.cs
- WorkflowOperationBehavior.cs
- DefaultClaimSet.cs
- NamespaceQuery.cs
- DbMetaDataFactory.cs
- MessageHeaderDescription.cs
- RedistVersionInfo.cs
- InvalidEnumArgumentException.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- X509Extension.cs
- XmlElementList.cs
- ClientRolePrincipal.cs
- AnnotationDocumentPaginator.cs
- ByteAnimationUsingKeyFrames.cs
- Rijndael.cs
- COM2PictureConverter.cs
- ConfigXmlAttribute.cs
- CodeDirectoryCompiler.cs
- NativeCppClassAttribute.cs
- SmtpException.cs
- CharConverter.cs
- UnicodeEncoding.cs
- KnownTypeAttribute.cs
- XmlSiteMapProvider.cs
- SystemDiagnosticsSection.cs
- TimeZone.cs