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
- DragDeltaEventArgs.cs
- ConnectionString.cs
- CellTreeNode.cs
- Errors.cs
- _LazyAsyncResult.cs
- HotSpotCollection.cs
- ProtocolsConfigurationHandler.cs
- MeasureData.cs
- SkewTransform.cs
- HashSetDebugView.cs
- ToolboxItemAttribute.cs
- FixedSOMTableRow.cs
- MouseCaptureWithinProperty.cs
- PathGeometry.cs
- RequestBringIntoViewEventArgs.cs
- SaveRecipientRequest.cs
- ToolStripDropDownClosingEventArgs.cs
- StringSource.cs
- CookieProtection.cs
- ThemeConfigurationDialog.cs
- ScriptComponentDescriptor.cs
- NamedPermissionSet.cs
- XmlSchemaSimpleContentRestriction.cs
- Wildcard.cs
- ThemeDirectoryCompiler.cs
- Vector3DCollectionConverter.cs
- RepeatBehavior.cs
- WindowsHyperlink.cs
- WebEventCodes.cs
- BooleanStorage.cs
- CollectionChangedEventManager.cs
- AppDomainAttributes.cs
- TextParaClient.cs
- TranslateTransform.cs
- SqlClientWrapperSmiStreamChars.cs
- ExpressionBinding.cs
- DesignTimeData.cs
- ToolStripItemClickedEventArgs.cs
- ActivityExecutorOperation.cs
- SpeechSeg.cs
- SecurityAttributeGenerationHelper.cs
- GenericEnumConverter.cs
- DataGridColumn.cs
- AnchoredBlock.cs
- MailHeaderInfo.cs
- AudioBase.cs
- DesignerActionMethodItem.cs
- HealthMonitoringSection.cs
- ScrollableControl.cs
- SessionPageStatePersister.cs
- ExceptionUtility.cs
- ProfileSection.cs
- UnsettableComboBox.cs
- MutexSecurity.cs
- BreadCrumbTextConverter.cs
- Win32MouseDevice.cs
- ProgressBarRenderer.cs
- ArglessEventHandlerProxy.cs
- KeySplineConverter.cs
- XmlNodeChangedEventArgs.cs
- GroupBoxRenderer.cs
- ToolStripRenderEventArgs.cs
- Renderer.cs
- ProxyAttribute.cs
- TextLineResult.cs
- XmlNamespaceManager.cs
- Vector.cs
- XPathNodeInfoAtom.cs
- SourceElementsCollection.cs
- ApplicationInfo.cs
- ObjectToIdCache.cs
- Wildcard.cs
- JobStaple.cs
- CodeCommentStatement.cs
- ModelEditingScope.cs
- HttpApplication.cs
- SortedDictionary.cs
- WindowsAuthenticationEventArgs.cs
- glyphs.cs
- ContainerParagraph.cs
- SByteStorage.cs
- RadioButtonAutomationPeer.cs
- Misc.cs
- DeploymentExceptionMapper.cs
- TextBox.cs
- XmlSchemaException.cs
- BitSet.cs
- WindowsIdentity.cs
- PenLineJoinValidation.cs
- ForwardPositionQuery.cs
- CompoundFileStreamReference.cs
- App.cs
- PointIndependentAnimationStorage.cs
- CfgArc.cs
- MetafileHeaderEmf.cs
- BinarySerializer.cs
- Scene3D.cs
- WorkflowItemPresenter.cs
- ProjectedSlot.cs
- GradientStop.cs