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
- DbConnectionFactory.cs
- EditCommandColumn.cs
- Rect.cs
- RemoveStoryboard.cs
- HttpServerVarsCollection.cs
- TimeSpanMinutesConverter.cs
- SafeEventLogWriteHandle.cs
- DesignerSelectionListAdapter.cs
- NativeMethods.cs
- ToolboxItemCollection.cs
- CodeVariableReferenceExpression.cs
- NewItemsContextMenuStrip.cs
- WizardForm.cs
- metadatamappinghashervisitor.cs
- SQLMoney.cs
- WebPartDeleteVerb.cs
- MembershipValidatePasswordEventArgs.cs
- EntityClassGenerator.cs
- SelectionRangeConverter.cs
- FontConverter.cs
- ContentFilePart.cs
- RuleProcessor.cs
- JsonXmlDataContract.cs
- TrustLevel.cs
- Region.cs
- AuthorizationSection.cs
- SelectionHighlightInfo.cs
- ClientSession.cs
- GroupItemAutomationPeer.cs
- ErrorTableItemStyle.cs
- DebugController.cs
- OdbcUtils.cs
- baseaxisquery.cs
- XmlSchemaGroup.cs
- RIPEMD160.cs
- XmlNamespaceManager.cs
- CompilerParameters.cs
- CommandSet.cs
- TypeTypeConverter.cs
- SoapReflectionImporter.cs
- ListViewItemMouseHoverEvent.cs
- LineGeometry.cs
- MessageSmuggler.cs
- SQLCharsStorage.cs
- EventManager.cs
- InvokeGenerator.cs
- StatusBarItemAutomationPeer.cs
- ETagAttribute.cs
- StylusPointPropertyInfo.cs
- OpCopier.cs
- X509Certificate.cs
- ReadOnlyPropertyMetadata.cs
- SmtpDigestAuthenticationModule.cs
- SecurityTokenValidationException.cs
- ToolStripSeparatorRenderEventArgs.cs
- QueueNameHelper.cs
- DataKeyArray.cs
- UidManager.cs
- WebPartConnectionsConnectVerb.cs
- DropSource.cs
- ContextInformation.cs
- DocumentSchemaValidator.cs
- LoginName.cs
- JsonReader.cs
- WeakEventTable.cs
- HtmlInputText.cs
- WindowClosedEventArgs.cs
- ObjectDataSourceWizardForm.cs
- VectorAnimationBase.cs
- XmlSecureResolver.cs
- EFAssociationProvider.cs
- MetafileHeaderWmf.cs
- FileSystemInfo.cs
- DataGridItemEventArgs.cs
- DBSchemaTable.cs
- LocalIdCollection.cs
- Root.cs
- IntranetCredentialPolicy.cs
- ResolvedKeyFrameEntry.cs
- ObjectDataSourceWizardForm.cs
- XmlSchemaValidator.cs
- EntityContainerAssociationSet.cs
- HtmlInputHidden.cs
- ExpressionUtilities.cs
- DataGridViewSelectedRowCollection.cs
- EncryptedXml.cs
- DataListCommandEventArgs.cs
- ControlAdapter.cs
- ScrollBarAutomationPeer.cs
- PropertyDescriptorComparer.cs
- VisualProxy.cs
- Terminate.cs
- PageWrapper.cs
- RtfToXamlReader.cs
- StartUpEventArgs.cs
- PromptStyle.cs
- SqlServer2KCompatibilityCheck.cs
- XamlBrushSerializer.cs
- DefaultHttpHandler.cs
- SmtpClient.cs