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
- XmlCustomFormatter.cs
- CalendarDateRange.cs
- SudsCommon.cs
- ParallelTimeline.cs
- GradientStop.cs
- COM2AboutBoxPropertyDescriptor.cs
- _Events.cs
- OleServicesContext.cs
- Rotation3D.cs
- PathData.cs
- JournalEntryListConverter.cs
- EventTrigger.cs
- PermissionRequestEvidence.cs
- BitmapData.cs
- ListControlBoundActionList.cs
- X509CertificateTokenFactoryCredential.cs
- SingleConverter.cs
- ToolStripControlHost.cs
- ProxyManager.cs
- BindingExpression.cs
- HostingEnvironmentException.cs
- smtppermission.cs
- ObjectDataSourceFilteringEventArgs.cs
- BaseDataListComponentEditor.cs
- CompilerLocalReference.cs
- HttpChannelHelpers.cs
- PathSegment.cs
- Adorner.cs
- KeyboardNavigation.cs
- ObjectNotFoundException.cs
- ScriptReference.cs
- ParameterInfo.cs
- DebugHandleTracker.cs
- EntityContainerEmitter.cs
- _ProxyChain.cs
- HttpApplication.cs
- ProgressBarHighlightConverter.cs
- Point4D.cs
- EntityDataSourceWrapperCollection.cs
- TextBounds.cs
- DataGridViewCellStyle.cs
- ResourceReferenceExpression.cs
- FixedPageProcessor.cs
- ObfuscateAssemblyAttribute.cs
- ClientData.cs
- DirectoryInfo.cs
- RenderData.cs
- ClientProxyGenerator.cs
- AsymmetricSecurityProtocolFactory.cs
- StylusEventArgs.cs
- ObjectDataProvider.cs
- PositiveTimeSpanValidator.cs
- DbMetaDataFactory.cs
- counter.cs
- dtdvalidator.cs
- CodeAccessPermission.cs
- URLAttribute.cs
- StrokeRenderer.cs
- DataGridAutomationPeer.cs
- StorageRoot.cs
- Color.cs
- Misc.cs
- ViewSimplifier.cs
- MemoryStream.cs
- LateBoundChannelParameterCollection.cs
- Dynamic.cs
- DataColumnMapping.cs
- Point3DCollectionConverter.cs
- Atom10FormatterFactory.cs
- InvokePattern.cs
- CompositeControl.cs
- Sql8ExpressionRewriter.cs
- AppSettingsExpressionBuilder.cs
- DataGridViewColumnEventArgs.cs
- DtrList.cs
- DynamicValueConverter.cs
- CompilerTypeWithParams.cs
- WindowsMenu.cs
- ObjectNavigationPropertyMapping.cs
- State.cs
- VerificationAttribute.cs
- ResolveMatchesApril2005.cs
- PointConverter.cs
- CheckedPointers.cs
- BrowserCapabilitiesFactoryBase.cs
- RTLAwareMessageBox.cs
- listitem.cs
- TextSearch.cs
- RuntimeConfigurationRecord.cs
- DrawingVisualDrawingContext.cs
- ApplicationTrust.cs
- DashStyle.cs
- WriteStateInfoBase.cs
- EventToken.cs
- SqlUserDefinedAggregateAttribute.cs
- FixedSOMGroup.cs
- TerminateDesigner.cs
- GridViewEditEventArgs.cs
- TextSegment.cs
- PersonalizableAttribute.cs