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
- SerializerProvider.cs
- TagPrefixCollection.cs
- httpapplicationstate.cs
- ConfigXmlComment.cs
- _SslStream.cs
- XmlSerializerFaultFormatter.cs
- GeneralTransform3DGroup.cs
- ConfigXmlWhitespace.cs
- ButtonColumn.cs
- CompiledWorkflowDefinitionContext.cs
- PasswordTextContainer.cs
- NativeObjectSecurity.cs
- ServiceOperationWrapper.cs
- BamlBinaryWriter.cs
- InternalConfigRoot.cs
- Image.cs
- AdapterUtil.cs
- HandledMouseEvent.cs
- InfiniteIntConverter.cs
- XPathSelfQuery.cs
- DbConnectionPoolOptions.cs
- RtfFormatStack.cs
- Padding.cs
- ApplicationActivator.cs
- WsdlParser.cs
- DesigntimeLicenseContext.cs
- RangeValuePattern.cs
- CdpEqualityComparer.cs
- SupportsEventValidationAttribute.cs
- DocumentSequenceHighlightLayer.cs
- SingleAnimationBase.cs
- CallbackValidator.cs
- ProviderConnectionPointCollection.cs
- TreeNode.cs
- Baml2006ReaderContext.cs
- FillRuleValidation.cs
- CheckBoxList.cs
- unsafenativemethodstextservices.cs
- DataServiceResponse.cs
- SpellerHighlightLayer.cs
- EndEvent.cs
- TreeViewImageIndexConverter.cs
- ResourceProperty.cs
- Odbc32.cs
- PeerInvitationResponse.cs
- IERequestCache.cs
- PageThemeBuildProvider.cs
- WebColorConverter.cs
- MissingFieldException.cs
- FontStyle.cs
- DataSysAttribute.cs
- BlurBitmapEffect.cs
- TemplateBaseAction.cs
- CapiSafeHandles.cs
- ListItem.cs
- ChildTable.cs
- DataGridViewTextBoxEditingControl.cs
- RecognizerInfo.cs
- CounterCreationData.cs
- peernodeimplementation.cs
- DigitShape.cs
- ToolStrip.cs
- RankException.cs
- AstNode.cs
- followingsibling.cs
- TextParaClient.cs
- FolderBrowserDialog.cs
- Rect3DConverter.cs
- TypeElementCollection.cs
- CqlIdentifiers.cs
- WebPartDisplayMode.cs
- DateTimePicker.cs
- HttpProxyCredentialType.cs
- ResourceBinder.cs
- DesignerHierarchicalDataSourceView.cs
- TimerElapsedEvenArgs.cs
- ErrorStyle.cs
- InfoCardSymmetricCrypto.cs
- _UncName.cs
- versioninfo.cs
- ConsumerConnectionPoint.cs
- Byte.cs
- EventProxy.cs
- SettingsProviderCollection.cs
- HttpListenerException.cs
- SoapMessage.cs
- SoapInteropTypes.cs
- WpfMemberInvoker.cs
- TypeSystem.cs
- HtmlInputCheckBox.cs
- SettingsBindableAttribute.cs
- ListSourceHelper.cs
- _FixedSizeReader.cs
- oledbmetadatacolumnnames.cs
- StringSorter.cs
- TraversalRequest.cs
- ProgressBar.cs
- PrintPreviewControl.cs
- FillBehavior.cs
- ObjectResult.cs