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
- DbDataReader.cs
- PolicyImporterElement.cs
- ScrollBar.cs
- ResourceExpressionEditorSheet.cs
- FlowDocumentPaginator.cs
- ErrorHandler.cs
- Set.cs
- RegexFCD.cs
- ExpressionLexer.cs
- DbConnectionPoolOptions.cs
- PointKeyFrameCollection.cs
- TrackingLocationCollection.cs
- XmlC14NWriter.cs
- TableItemPatternIdentifiers.cs
- ControlBuilderAttribute.cs
- TrackPointCollection.cs
- SimpleColumnProvider.cs
- PartialTrustValidationBehavior.cs
- QueryCursorEventArgs.cs
- TypeLoadException.cs
- SiteMap.cs
- ValidatingReaderNodeData.cs
- TableCell.cs
- EmulateRecognizeCompletedEventArgs.cs
- RuleProcessor.cs
- XmlMembersMapping.cs
- QilTypeChecker.cs
- SynchronizationLockException.cs
- SecurityCredentialsManager.cs
- XmlQueryStaticData.cs
- DefaultAsyncDataDispatcher.cs
- Roles.cs
- HierarchicalDataBoundControlAdapter.cs
- TabControlCancelEvent.cs
- EdmFunctionAttribute.cs
- HwndHostAutomationPeer.cs
- X509CertificateCollection.cs
- WeakReadOnlyCollection.cs
- HostedTcpTransportManager.cs
- Soap.cs
- PtsContext.cs
- ObservableDictionary.cs
- UserPreferenceChangedEventArgs.cs
- ActiveXHost.cs
- JavaScriptSerializer.cs
- ObjectCloneHelper.cs
- CustomErrorCollection.cs
- WmlLinkAdapter.cs
- SimpleType.cs
- DbProviderSpecificTypePropertyAttribute.cs
- NominalTypeEliminator.cs
- SourceFileBuildProvider.cs
- CookielessHelper.cs
- CachedTypeface.cs
- WindowsSysHeader.cs
- TypeConverterValueSerializer.cs
- UpdatePanelTrigger.cs
- DataGridViewColumnTypePicker.cs
- ApplicationInterop.cs
- Directory.cs
- IsolatedStorage.cs
- DSASignatureDeformatter.cs
- SqlMetaData.cs
- RequiredFieldValidator.cs
- JsonGlobals.cs
- NamespaceMapping.cs
- ZipQueryOperator.cs
- NamespaceListProperty.cs
- RequestCache.cs
- TextFormatterImp.cs
- RegionIterator.cs
- SqlPersonalizationProvider.cs
- InternalDuplexChannelListener.cs
- ObjectListField.cs
- UpdatePanelControlTrigger.cs
- Debugger.cs
- ManagedIStream.cs
- HtmlTextArea.cs
- TileBrush.cs
- ProxyWebPartManager.cs
- DynamicPropertyHolder.cs
- FilePrompt.cs
- ParseNumbers.cs
- ArrayConverter.cs
- MemberRelationshipService.cs
- PerfService.cs
- InvokeGenerator.cs
- Guid.cs
- ViewEventArgs.cs
- RelationshipEndMember.cs
- TypeRefElement.cs
- FixedPageAutomationPeer.cs
- PathGeometry.cs
- RestHandlerFactory.cs
- Form.cs
- TextRangeBase.cs
- EntityContainer.cs
- TriggerCollection.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- AdRotator.cs