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
- MetadataPropertyAttribute.cs
- OpCodes.cs
- FixUp.cs
- StructuralType.cs
- MultiTrigger.cs
- InvalidCommandTreeException.cs
- System.Data_BID.cs
- MoveSizeWinEventHandler.cs
- Oid.cs
- NavigationWindowAutomationPeer.cs
- EntityType.cs
- PerformanceCounterPermissionAttribute.cs
- SqlBooleanMismatchVisitor.cs
- GridViewCancelEditEventArgs.cs
- ObfuscateAssemblyAttribute.cs
- ContextMenuService.cs
- EntitySqlQueryBuilder.cs
- XPathSingletonIterator.cs
- RenderTargetBitmap.cs
- StylusSystemGestureEventArgs.cs
- InfoCardHelper.cs
- TextRunCacheImp.cs
- ValueOfAction.cs
- DocumentGrid.cs
- BaseProcessor.cs
- QilReplaceVisitor.cs
- Events.cs
- ScrollEventArgs.cs
- PathData.cs
- Int16Converter.cs
- XmlSchemaAll.cs
- TemplatePropertyEntry.cs
- WebPartHeaderCloseVerb.cs
- Enum.cs
- FixedFindEngine.cs
- __Filters.cs
- Image.cs
- WebPartEditorOkVerb.cs
- HttpContext.cs
- AutomationPropertyInfo.cs
- SecurityContext.cs
- WindowsIdentity.cs
- OutputCacheEntry.cs
- RuntimeConfig.cs
- ConfigXmlWhitespace.cs
- SecurityKeyIdentifierClause.cs
- ControllableStoryboardAction.cs
- NumericUpDownAccelerationCollection.cs
- DataRow.cs
- PeerObject.cs
- TextPointer.cs
- XmlDictionaryReaderQuotas.cs
- UnsafeNativeMethods.cs
- MLangCodePageEncoding.cs
- XmlTextAttribute.cs
- XmlILModule.cs
- RoutedCommand.cs
- DisplayInformation.cs
- ObjectAnimationUsingKeyFrames.cs
- EmbeddedObject.cs
- SelectionService.cs
- CounterCreationDataCollection.cs
- BinaryFormatterSinks.cs
- VariableExpressionConverter.cs
- TargetException.cs
- HttpCacheVary.cs
- OleDbRowUpdatingEvent.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- SystemThemeKey.cs
- TableRow.cs
- TextContainerHelper.cs
- ManipulationLogic.cs
- AdditionalEntityFunctions.cs
- HtmlInputButton.cs
- AssemblyHash.cs
- DataRelation.cs
- WindowsListViewGroupSubsetLink.cs
- MimeBasePart.cs
- RefreshEventArgs.cs
- ManifestResourceInfo.cs
- ActivityBuilderXamlWriter.cs
- MarshalDirectiveException.cs
- BamlResourceContent.cs
- WebPartEditorCancelVerb.cs
- FontWeightConverter.cs
- Literal.cs
- PeerNodeAddress.cs
- DependentList.cs
- ToolStripDesignerAvailabilityAttribute.cs
- EdmError.cs
- FontNameEditor.cs
- BinaryReader.cs
- UiaCoreTypesApi.cs
- DragAssistanceManager.cs
- JavaScriptSerializer.cs
- UidPropertyAttribute.cs
- ApplicationDirectoryMembershipCondition.cs
- BaseValidatorDesigner.cs
- FactoryGenerator.cs
- SQLGuid.cs