Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Dispatcher / MultiplexingDispatchMessageFormatter.cs / 1305376 / MultiplexingDispatchMessageFormatter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System; using System.Collections.Generic; using System.Net.Mime; using System.Runtime; using System.ServiceModel; using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.ServiceModel.Web; class MultiplexingDispatchMessageFormatter : IDispatchMessageFormatter { Dictionaryformatters; WebMessageFormat defaultFormat; Dictionary defaultContentTypes; public WebMessageFormat DefaultFormat { get { return this.defaultFormat; } } public Dictionary DefaultContentTypes { get { return this.defaultContentTypes; } } public MultiplexingDispatchMessageFormatter(Dictionary formatters, WebMessageFormat defaultFormat) { if (formatters == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("formatters"); } this.formatters = formatters; this.defaultFormat = defaultFormat; this.defaultContentTypes = new Dictionary (); Fx.Assert(this.formatters.ContainsKey(this.defaultFormat), "The default format should always be included in the dictionary of formatters."); } public void DeserializeRequest(Message message, object[] parameters) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR2.GetString(SR2.SerializingRequestNotSupportedByFormatter, this))); } public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result) { OutgoingWebResponseContext outgoingResponse = WebOperationContext.Current.OutgoingResponse; WebMessageFormat? nullableFormat = outgoingResponse.Format; WebMessageFormat format = nullableFormat ?? this.defaultFormat; if (!this.formatters.ContainsKey(format)) { string operationName = " "; MessageProperties messageProperties = OperationContext.Current.IncomingMessageProperties; if (messageProperties.ContainsKey(WebHttpDispatchOperationSelector.HttpOperationNamePropertyName)) { operationName = messageProperties[WebHttpDispatchOperationSelector.HttpOperationNamePropertyName] as string; } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR2.GetString(SR2.OperationDoesNotSupportFormat, operationName, format.ToString()))); } if (string.IsNullOrEmpty(outgoingResponse.ContentType)) { string automatedSelectionContentType = outgoingResponse.AutomatedFormatSelectionContentType; if (!string.IsNullOrEmpty(automatedSelectionContentType)) { // Don't set the content-type if it is default xml for backwards compatiabilty if (!string.Equals(automatedSelectionContentType, defaultContentTypes[WebMessageFormat.Xml], StringComparison.OrdinalIgnoreCase)) { outgoingResponse.ContentType = automatedSelectionContentType; } } else { // Don't set the content-type if it is default xml for backwards compatiabilty if (format != WebMessageFormat.Xml) { outgoingResponse.ContentType = defaultContentTypes[format]; } } } Message message = this.formatters[format].SerializeReply(messageVersion, parameters, result); return message; } public bool SupportsMessageFormat(WebMessageFormat format) { return this.formatters.ContainsKey(format); } } } // 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
- HTMLTagNameToTypeMapper.cs
- TraceSwitch.cs
- ObjectAnimationUsingKeyFrames.cs
- XmlSchemaInferenceException.cs
- SqlConnectionString.cs
- PointLightBase.cs
- EditingCommands.cs
- GradientPanel.cs
- fixedPageContentExtractor.cs
- CharKeyFrameCollection.cs
- wgx_commands.cs
- CodeTypeMember.cs
- ResourceWriter.cs
- ConstraintEnumerator.cs
- GenericTypeParameterBuilder.cs
- RetrieveVirtualItemEventArgs.cs
- DrawingGroupDrawingContext.cs
- XPathDescendantIterator.cs
- BindingObserver.cs
- ServiceCredentialsElement.cs
- HtmlProps.cs
- filewebrequest.cs
- DependencyProperty.cs
- MeasureData.cs
- TabPage.cs
- HtmlInputReset.cs
- FormsAuthenticationModule.cs
- Process.cs
- URIFormatException.cs
- ContextQuery.cs
- KeyTime.cs
- TextBoxDesigner.cs
- ListViewGroup.cs
- CacheSection.cs
- complextypematerializer.cs
- UrlAuthorizationModule.cs
- safex509handles.cs
- Parallel.cs
- UrlMapping.cs
- SystemColors.cs
- BindingSource.cs
- TabletDevice.cs
- EntityConnectionStringBuilder.cs
- Stopwatch.cs
- Track.cs
- XPathAncestorIterator.cs
- SafeNativeMethods.cs
- TrackingProfile.cs
- ComponentConverter.cs
- BitVector32.cs
- SqlParameterCollection.cs
- BinaryObjectInfo.cs
- CfgRule.cs
- Int16Converter.cs
- CssTextWriter.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- TextParagraphProperties.cs
- baseaxisquery.cs
- LassoHelper.cs
- TargetPerspective.cs
- FixedHighlight.cs
- TcpServerChannel.cs
- ToggleButtonAutomationPeer.cs
- ValidationErrorCollection.cs
- DrawingAttributesDefaultValueFactory.cs
- CqlQuery.cs
- PointF.cs
- DesignerSerializationManager.cs
- GridSplitterAutomationPeer.cs
- XmlArrayAttribute.cs
- WindowsSysHeader.cs
- WebPartConnectionsConfigureVerb.cs
- ApplicationSecurityInfo.cs
- ObjectStateEntry.cs
- TCPListener.cs
- SaveWorkflowCommand.cs
- CodeIndexerExpression.cs
- ZoneLinkButton.cs
- SystemDropShadowChrome.cs
- RepeaterItemEventArgs.cs
- PackageRelationshipSelector.cs
- BitmapEffect.cs
- Visual.cs
- ComProxy.cs
- CorrelationTokenTypeConvertor.cs
- ComponentCache.cs
- ActiveXSite.cs
- documentsequencetextcontainer.cs
- SQLInt64Storage.cs
- Region.cs
- WindowsButton.cs
- SymbolTable.cs
- EffectiveValueEntry.cs
- ConfigErrorGlyph.cs
- PolyLineSegment.cs
- TextDecoration.cs
- JsonObjectDataContract.cs
- FileRegion.cs
- IERequestCache.cs
- SystemColorTracker.cs