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
- WorkflowApplicationAbortedEventArgs.cs
- StubHelpers.cs
- ManagedWndProcTracker.cs
- PointAnimationUsingKeyFrames.cs
- MasterPageParser.cs
- WebEventCodes.cs
- HeaderedContentControl.cs
- InkSerializer.cs
- PrimitiveXmlSerializers.cs
- SurrogateSelector.cs
- ExpressionNode.cs
- WebPartDeleteVerb.cs
- ComplexType.cs
- ReaderWriterLockSlim.cs
- DataSpaceManager.cs
- WindowsFormsHelpers.cs
- _SslState.cs
- ExpressionEditorAttribute.cs
- MD5.cs
- EntityRecordInfo.cs
- InvalidCastException.cs
- RenderData.cs
- DuplicateDetector.cs
- Converter.cs
- MenuItemCollection.cs
- VSWCFServiceContractGenerator.cs
- securitycriticaldataClass.cs
- DocumentViewerBaseAutomationPeer.cs
- InputMethodStateTypeInfo.cs
- BitVec.cs
- WebServiceHandler.cs
- DocumentSequenceHighlightLayer.cs
- BeginEvent.cs
- BaseDataListComponentEditor.cs
- SamlConditions.cs
- SectionXmlInfo.cs
- ModelItemExtensions.cs
- TripleDES.cs
- PathData.cs
- ServiceReference.cs
- ExistsInCollection.cs
- sitestring.cs
- FileLogRecordEnumerator.cs
- TypedTableBase.cs
- Axis.cs
- SystemTcpConnection.cs
- NumberFormatter.cs
- TextTreePropertyUndoUnit.cs
- VersionConverter.cs
- Aes.cs
- SqlNodeAnnotation.cs
- PriorityBindingExpression.cs
- AppDomain.cs
- GiveFeedbackEvent.cs
- DbSourceParameterCollection.cs
- ThrowHelper.cs
- StringKeyFrameCollection.cs
- RuntimeCompatibilityAttribute.cs
- OdbcHandle.cs
- Error.cs
- LabelDesigner.cs
- TextClipboardData.cs
- ScrollContentPresenter.cs
- BinaryUtilClasses.cs
- SafeUserTokenHandle.cs
- LogEntrySerializer.cs
- SharedHttpsTransportManager.cs
- DataRecordObjectView.cs
- SafePipeHandle.cs
- ContextMenuService.cs
- GorillaCodec.cs
- ColorTranslator.cs
- SrgsOneOf.cs
- PrincipalPermission.cs
- IconHelper.cs
- Util.cs
- GetPageCompletedEventArgs.cs
- CodeEntryPointMethod.cs
- OleDbDataReader.cs
- XPathScanner.cs
- ItemMap.cs
- ZipPackage.cs
- UnsafeNativeMethods.cs
- ValidatedMobileControlConverter.cs
- SQLInt64.cs
- Mutex.cs
- DataSourceControlBuilder.cs
- BuildResultCache.cs
- ExtendedTransformFactory.cs
- BaseParser.cs
- EventInfo.cs
- XmlAttribute.cs
- Registry.cs
- HelpProvider.cs
- TextEffect.cs
- FederatedMessageSecurityOverHttp.cs
- ModelService.cs
- XPathBinder.cs
- SystemException.cs
- IconConverter.cs