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
- sqlcontext.cs
- SerializerDescriptor.cs
- DirectoryObjectSecurity.cs
- CodeActivityContext.cs
- DataRecordInternal.cs
- WebPartCloseVerb.cs
- TextEncodedRawTextWriter.cs
- TableLayoutPanel.cs
- Viewport3DVisual.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- DuplicateWaitObjectException.cs
- BuilderInfo.cs
- StoreAnnotationsMap.cs
- MissingMemberException.cs
- Vars.cs
- Propagator.cs
- DoubleAnimationBase.cs
- SessionPageStateSection.cs
- Baml2006ReaderSettings.cs
- XmlNullResolver.cs
- DecryptedHeader.cs
- Process.cs
- WebSysDisplayNameAttribute.cs
- InputScopeManager.cs
- TimeSpanValidatorAttribute.cs
- SR.cs
- Point3DCollectionValueSerializer.cs
- JsonReaderWriterFactory.cs
- KnownBoxes.cs
- IPCCacheManager.cs
- HuffCodec.cs
- XmlAnyElementAttributes.cs
- CodeExporter.cs
- Invariant.cs
- AppDomainManager.cs
- SqlClientMetaDataCollectionNames.cs
- PeerApplication.cs
- TextureBrush.cs
- DataGridViewRowStateChangedEventArgs.cs
- ResourcePermissionBaseEntry.cs
- IntSecurity.cs
- InstanceOwnerException.cs
- DynamicMethod.cs
- CultureInfo.cs
- WindowsFormsHost.cs
- CodeAssignStatement.cs
- PriorityQueue.cs
- AuthenticationSection.cs
- SchemaCollectionPreprocessor.cs
- CacheModeConverter.cs
- TableAutomationPeer.cs
- TranslateTransform.cs
- ApplicationFileCodeDomTreeGenerator.cs
- SerialErrors.cs
- ImportCatalogPart.cs
- MenuAutomationPeer.cs
- ObjectViewEntityCollectionData.cs
- Validator.cs
- KnownIds.cs
- FormattedText.cs
- Size.cs
- Win32SafeHandles.cs
- RegisteredHiddenField.cs
- NestedContainer.cs
- PackageRelationshipSelector.cs
- DbParameterHelper.cs
- LocatorPartList.cs
- GenericAuthenticationEventArgs.cs
- ConfigurationLockCollection.cs
- DataGridViewRowHeaderCell.cs
- DateTimeOffsetConverter.cs
- PermissionRequestEvidence.cs
- ImmutableDispatchRuntime.cs
- Barrier.cs
- LassoSelectionBehavior.cs
- FileChangesMonitor.cs
- LoginView.cs
- DataAdapter.cs
- _CookieModule.cs
- SafeArrayTypeMismatchException.cs
- SettingsPropertyValue.cs
- BitmapEffectDrawingContextWalker.cs
- Matrix3D.cs
- SpecialFolderEnumConverter.cs
- _IPv6Address.cs
- SchemaElementLookUpTable.cs
- PeerNameResolver.cs
- StrokeSerializer.cs
- CfgArc.cs
- EntityType.cs
- ADConnectionHelper.cs
- xmlglyphRunInfo.cs
- oledbmetadatacollectionnames.cs
- ExpressionTextBox.xaml.cs
- IgnoreFileBuildProvider.cs
- AutomationAttributeInfo.cs
- HMACSHA384.cs
- MultiBinding.cs
- NamespaceListProperty.cs
- PerformanceCounter.cs