Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Dispatcher / DemultiplexingDispatchMessageFormatter.cs / 1 / DemultiplexingDispatchMessageFormatter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System; using System.Collections.Generic; using System.ServiceModel; using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.Globalization; using System.Text; class DemultiplexingDispatchMessageFormatter : IDispatchMessageFormatter { IDispatchMessageFormatter defaultFormatter; Dictionaryformatters; string supportedFormats; public DemultiplexingDispatchMessageFormatter(IDictionary formatters, IDispatchMessageFormatter defaultFormatter) { if (formatters == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("formatters"); } this.formatters = new Dictionary (); foreach (WebContentFormat key in formatters.Keys) { this.formatters.Add(key, formatters[key]); } this.defaultFormatter = defaultFormatter; } public void DeserializeRequest(Message message, object[] parameters) { if (message == null) { return; } WebContentFormat format; IDispatchMessageFormatter selectedFormatter; if (TryGetEncodingFormat(message, out format)) { this.formatters.TryGetValue(format, out selectedFormatter); if (selectedFormatter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperWarning(new InvalidOperationException(SR2.GetString(SR2.UnrecognizedHttpMessageFormat, format, GetSupportedFormats()))); } } else { selectedFormatter = this.defaultFormatter; if (selectedFormatter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperWarning(new InvalidOperationException(SR2.GetString(SR2.MessageFormatPropertyNotFound3))); } } selectedFormatter.DeserializeRequest(message, parameters); } public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR2.GetString(SR2.SerializingReplyNotSupportedByFormatter, this))); } internal static string GetSupportedFormats(IEnumerable formats) { StringBuilder sb = new StringBuilder(); int i = 0; foreach (WebContentFormat format in formats) { if (i > 0) { sb.Append(CultureInfo.CurrentCulture.TextInfo.ListSeparator); sb.Append(" "); } sb.Append("'" + format.ToString() + "'"); ++i; } return sb.ToString(); } internal static bool TryGetEncodingFormat(Message message, out WebContentFormat format) { object prop; message.Properties.TryGetValue(WebBodyFormatMessageProperty.Name, out prop); WebBodyFormatMessageProperty formatProperty = prop as WebBodyFormatMessageProperty; if (formatProperty == null) { format = WebContentFormat.Default; return false; } format = formatProperty.Format; return true; } string GetSupportedFormats() { if (this.supportedFormats == null) { this.supportedFormats = GetSupportedFormats(this.formatters.Keys); } return this.supportedFormats; } } } // 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
- WebPartMenu.cs
- AttachedPropertyInfo.cs
- If.cs
- AdornerDecorator.cs
- RowType.cs
- TextSelectionProcessor.cs
- StringFreezingAttribute.cs
- RadioButtonBaseAdapter.cs
- Brush.cs
- HtmlGenericControl.cs
- SocketException.cs
- Attachment.cs
- x509utils.cs
- RequestSecurityToken.cs
- ControlCollection.cs
- OpenFileDialog.cs
- SymDocumentType.cs
- PostBackOptions.cs
- RtfToXamlReader.cs
- UpdateTracker.cs
- ExitEventArgs.cs
- InternalPermissions.cs
- EntityCommandExecutionException.cs
- streamingZipPartStream.cs
- MemberHolder.cs
- HandledMouseEvent.cs
- DBSqlParser.cs
- DeclarationUpdate.cs
- ZipIOCentralDirectoryFileHeader.cs
- ModifierKeysConverter.cs
- tibetanshape.cs
- SqlDependencyUtils.cs
- WebPartActionVerb.cs
- Light.cs
- CultureInfo.cs
- BordersPage.cs
- NCryptNative.cs
- PointAnimationUsingPath.cs
- ZoneIdentityPermission.cs
- PersonalizationProviderCollection.cs
- SamlAction.cs
- Control.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- MostlySingletonList.cs
- Message.cs
- OdbcConnectionPoolProviderInfo.cs
- ParamArrayAttribute.cs
- IssuedTokenParametersEndpointAddressElement.cs
- WrappedIUnknown.cs
- RegistryKey.cs
- SqlNotificationEventArgs.cs
- CursorConverter.cs
- MaskedTextProvider.cs
- Page.cs
- KeyFrames.cs
- WebCategoryAttribute.cs
- SQLInt64.cs
- HtmlMeta.cs
- NotifyIcon.cs
- TextEndOfSegment.cs
- TypeNameConverter.cs
- Roles.cs
- RelationshipWrapper.cs
- ZoneIdentityPermission.cs
- NonParentingControl.cs
- Compress.cs
- FastEncoder.cs
- TemplateEditingVerb.cs
- BaseComponentEditor.cs
- FileDataSourceCache.cs
- XmlBinaryWriterSession.cs
- JsonEncodingStreamWrapper.cs
- SortDescriptionCollection.cs
- BamlLocalizableResource.cs
- MailWriter.cs
- CustomAssemblyResolver.cs
- KeyEventArgs.cs
- HitTestParameters3D.cs
- ExpandableObjectConverter.cs
- PointConverter.cs
- OleDbMetaDataFactory.cs
- FirstMatchCodeGroup.cs
- QueueProcessor.cs
- StateMachine.cs
- NonBatchDirectoryCompiler.cs
- RowToFieldTransformer.cs
- ProvidePropertyAttribute.cs
- SqlParameterCollection.cs
- ZoomingMessageFilter.cs
- EnvironmentPermission.cs
- ListenerElementsCollection.cs
- BitmapData.cs
- TopClause.cs
- Preprocessor.cs
- TreeViewImageGenerator.cs
- ZoomingMessageFilter.cs
- Int32EqualityComparer.cs
- GridErrorDlg.cs
- ArgumentOutOfRangeException.cs
- JournalEntryListConverter.cs