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
- WorkItem.cs
- ResourcePool.cs
- CfgSemanticTag.cs
- ConnectivityStatus.cs
- SerializationSectionGroup.cs
- TransformerInfoCollection.cs
- WinInet.cs
- ListItemsPage.cs
- XmlSchemaInferenceException.cs
- BindingWorker.cs
- RegexInterpreter.cs
- RegisteredDisposeScript.cs
- Lease.cs
- NameValuePermission.cs
- _ListenerResponseStream.cs
- View.cs
- XmlQualifiedName.cs
- ViewSimplifier.cs
- EpmAttributeNameBuilder.cs
- ServiceOperationWrapper.cs
- PrinterResolution.cs
- SqlFileStream.cs
- ThreadPool.cs
- WindowProviderWrapper.cs
- PersonalizationStateInfoCollection.cs
- EventArgs.cs
- PasswordBoxAutomationPeer.cs
- BufferBuilder.cs
- XmlSchemaDatatype.cs
- BinaryUtilClasses.cs
- HtmlInputImage.cs
- DataSetMappper.cs
- ErrorStyle.cs
- ThreadExceptionEvent.cs
- PerSessionInstanceContextProvider.cs
- CrossContextChannel.cs
- Duration.cs
- TextSelectionHighlightLayer.cs
- Unit.cs
- XmlWellformedWriter.cs
- TextRunCacheImp.cs
- FunctionDetailsReader.cs
- DelayedRegex.cs
- HttpListener.cs
- SqlDataSourceConnectionPanel.cs
- ServiceInfo.cs
- UnsettableComboBox.cs
- ThreadStateException.cs
- RoleManagerSection.cs
- OleDbMetaDataFactory.cs
- HttpRequestCacheValidator.cs
- SplitterCancelEvent.cs
- ZoneButton.cs
- x509store.cs
- PageVisual.cs
- RegisteredArrayDeclaration.cs
- JsonSerializer.cs
- PieceNameHelper.cs
- QilName.cs
- XmlExceptionHelper.cs
- DesignerActionPropertyItem.cs
- SqlXml.cs
- TreeNodeClickEventArgs.cs
- CodeDomSerializerBase.cs
- DataGridItemCollection.cs
- ClientRoleProvider.cs
- SecurityPolicySection.cs
- ArithmeticException.cs
- BinaryObjectReader.cs
- Vector3DAnimation.cs
- LowerCaseStringConverter.cs
- PositiveTimeSpanValidator.cs
- PropagatorResult.cs
- RegexMatchCollection.cs
- PageHandlerFactory.cs
- HtmlSelect.cs
- ObjectKeyFrameCollection.cs
- ListSourceHelper.cs
- ActivityStatusChangeEventArgs.cs
- RegexWorker.cs
- Set.cs
- BorderGapMaskConverter.cs
- FontCollection.cs
- DropShadowEffect.cs
- ThreadAttributes.cs
- TabControl.cs
- AstTree.cs
- HostSecurityManager.cs
- SingleAnimation.cs
- XmlSchemaException.cs
- TreeViewAutomationPeer.cs
- ItemDragEvent.cs
- SharedStatics.cs
- InternalConfigConfigurationFactory.cs
- AcceleratedTokenProviderState.cs
- WindowsEditBox.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- DelayedRegex.cs
- ByteAnimation.cs
- FocusWithinProperty.cs