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
- TemplateKeyConverter.cs
- ServerValidateEventArgs.cs
- Stopwatch.cs
- XmlSerializationReader.cs
- StringAttributeCollection.cs
- DllNotFoundException.cs
- ScrollProperties.cs
- WorkBatch.cs
- KeyProperty.cs
- ObjectView.cs
- RootBrowserWindowAutomationPeer.cs
- LabelEditEvent.cs
- PTProvider.cs
- HttpBrowserCapabilitiesWrapper.cs
- EditCommandColumn.cs
- _OSSOCK.cs
- MultiBindingExpression.cs
- CacheHelper.cs
- RuleInfoComparer.cs
- ToolboxComponentsCreatedEventArgs.cs
- BaseResourcesBuildProvider.cs
- QilFunction.cs
- ProviderCommandInfoUtils.cs
- RadioButtonList.cs
- SourceCollection.cs
- DebugHandleTracker.cs
- PropagatorResult.cs
- EdgeModeValidation.cs
- XPathSelectionIterator.cs
- ProxyHelper.cs
- WpfXamlType.cs
- MouseGestureValueSerializer.cs
- QilLoop.cs
- SettingsContext.cs
- ArrayExtension.cs
- FaultFormatter.cs
- TextControl.cs
- UITypeEditor.cs
- RTLAwareMessageBox.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- SmtpDigestAuthenticationModule.cs
- RequestCacheManager.cs
- LocalizabilityAttribute.cs
- LineServicesRun.cs
- ClientUtils.cs
- PersonalizableTypeEntry.cs
- Annotation.cs
- RuleConditionDialog.Designer.cs
- AttributedMetaModel.cs
- ToolStripProgressBar.cs
- MetadataArtifactLoaderResource.cs
- SQLInt64Storage.cs
- SwitchAttribute.cs
- Queue.cs
- KeyMatchBuilder.cs
- MemberPathMap.cs
- CacheModeConverter.cs
- ListItem.cs
- XslAst.cs
- KeyEvent.cs
- DateTimeFormatInfoScanner.cs
- CustomAttribute.cs
- ipaddressinformationcollection.cs
- ProfilePropertyMetadata.cs
- RawStylusInputCustomData.cs
- DynamicQueryableWrapper.cs
- RecipientInfo.cs
- XmlAttributeProperties.cs
- ControlValuePropertyAttribute.cs
- HScrollBar.cs
- AbsoluteQuery.cs
- WebBrowserProgressChangedEventHandler.cs
- TimeoutException.cs
- BinaryExpression.cs
- ToolStripStatusLabel.cs
- AudioFormatConverter.cs
- ResourceManager.cs
- Utils.cs
- AuthenticatingEventArgs.cs
- UserPreferenceChangedEventArgs.cs
- DataGridColumn.cs
- oledbconnectionstring.cs
- PageCodeDomTreeGenerator.cs
- ZoneLinkButton.cs
- HttpHandlerAction.cs
- VsPropertyGrid.cs
- Debug.cs
- Symbol.cs
- HtmlWindow.cs
- TextBox.cs
- InkCanvasInnerCanvas.cs
- PictureBox.cs
- CustomGrammar.cs
- PackageDigitalSignature.cs
- BuildResult.cs
- GridViewColumn.cs
- QilScopedVisitor.cs
- SqlClientFactory.cs
- XhtmlTextWriter.cs
- DiscoveryInnerClientAdhoc11.cs