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
- TypeInformation.cs
- FigureParagraph.cs
- ContractNamespaceAttribute.cs
- WorkflowMarkupSerializationProvider.cs
- PropertyGeneratedEventArgs.cs
- MenuItem.cs
- DataGridViewColumnConverter.cs
- SqlDataSourceView.cs
- FixedSOMPage.cs
- ComplexLine.cs
- XLinq.cs
- EqualityComparer.cs
- Token.cs
- InkPresenterAutomationPeer.cs
- AcceptorSessionSymmetricTransportSecurityProtocol.cs
- ReceiveContextCollection.cs
- BlobPersonalizationState.cs
- BitArray.cs
- EntryPointNotFoundException.cs
- TemplateControlBuildProvider.cs
- ContainerUIElement3D.cs
- TextElementAutomationPeer.cs
- PerformanceCounterManager.cs
- PickBranchDesigner.xaml.cs
- DoubleUtil.cs
- XmlCharCheckingReader.cs
- TaskFileService.cs
- TraceListeners.cs
- XmlDataContract.cs
- InstallerTypeAttribute.cs
- GraphicsContext.cs
- SymbolUsageManager.cs
- OleDbPermission.cs
- TypeNameHelper.cs
- SelectedDatesCollection.cs
- TemplatedWizardStep.cs
- ReadOnlyNameValueCollection.cs
- ObjectMemberMapping.cs
- PropertyTabAttribute.cs
- ControlPropertyNameConverter.cs
- NotifyCollectionChangedEventArgs.cs
- WebPartsSection.cs
- FilePrompt.cs
- UncommonField.cs
- ProgressBar.cs
- Fonts.cs
- StorageAssociationSetMapping.cs
- ResolveNextArgumentWorkItem.cs
- _ListenerAsyncResult.cs
- ToolboxItemAttribute.cs
- KeySpline.cs
- BoundPropertyEntry.cs
- NetStream.cs
- SAPICategories.cs
- XmlSchemaAppInfo.cs
- ReachUIElementCollectionSerializer.cs
- WindowsGraphicsWrapper.cs
- LogWriteRestartAreaState.cs
- UserControlAutomationPeer.cs
- PrtCap_Base.cs
- PolyBezierSegment.cs
- BaseCodeDomTreeGenerator.cs
- ProfileGroupSettings.cs
- AssemblyAttributesGoHere.cs
- OleDbError.cs
- SafeLocalAllocation.cs
- SafeCertificateContext.cs
- SplashScreenNativeMethods.cs
- ValueUtilsSmi.cs
- ObjectNotFoundException.cs
- VectorKeyFrameCollection.cs
- HasRunnableWorkflowEvent.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- SoapObjectReader.cs
- SqlDataSourceView.cs
- precedingquery.cs
- FrameworkElementAutomationPeer.cs
- ObjectDataSourceSelectingEventArgs.cs
- _OSSOCK.cs
- SendActivityDesigner.cs
- MetadataPropertyAttribute.cs
- BooleanExpr.cs
- UidManager.cs
- LinkConverter.cs
- KeyboardEventArgs.cs
- DesignerHierarchicalDataSourceView.cs
- SafeHandles.cs
- DBSchemaTable.cs
- TransformerInfo.cs
- WebPartEditVerb.cs
- XsltException.cs
- HttpListenerRequest.cs
- FtpCachePolicyElement.cs
- IntPtr.cs
- dbenumerator.cs
- xamlnodes.cs
- SupportingTokenDuplexChannel.cs
- SuppressIldasmAttribute.cs
- Variable.cs
- Types.cs