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
- QilPatternVisitor.cs
- safex509handles.cs
- SystemGatewayIPAddressInformation.cs
- EncryptionUtility.cs
- PointValueSerializer.cs
- XmlParserContext.cs
- StreamInfo.cs
- ClientFormsAuthenticationCredentials.cs
- DrawingCollection.cs
- MediaEntryAttribute.cs
- Geometry.cs
- AutomationPropertyInfo.cs
- DbParameterCollection.cs
- XmlQueryType.cs
- CategoryGridEntry.cs
- Helpers.cs
- PointAnimation.cs
- ElementMarkupObject.cs
- DataGridViewDataConnection.cs
- HttpCachePolicyBase.cs
- XmlSchemaSet.cs
- GraphicsContainer.cs
- SafeTimerHandle.cs
- WebRequestModulesSection.cs
- DefaultHttpHandler.cs
- PermissionListSet.cs
- ConfigXmlWhitespace.cs
- MemberPathMap.cs
- OleDbCommandBuilder.cs
- TypeSystem.cs
- ExpiredSecurityTokenException.cs
- InstanceDataCollectionCollection.cs
- MailSettingsSection.cs
- BufferedStream.cs
- XmlIgnoreAttribute.cs
- BufferBuilder.cs
- FontCacheUtil.cs
- BufferedOutputStream.cs
- DataGridItemAttachedStorage.cs
- ShaderEffect.cs
- ErrorsHelper.cs
- DefinitionUpdate.cs
- SqlAggregateChecker.cs
- FrameworkObject.cs
- VideoDrawing.cs
- ConnectionPointCookie.cs
- InternalTypeHelper.cs
- QualificationDataAttribute.cs
- WebRequest.cs
- Task.cs
- DataGridViewCellMouseEventArgs.cs
- WebServiceClientProxyGenerator.cs
- OutOfMemoryException.cs
- SoapAttributeAttribute.cs
- TextWriterTraceListener.cs
- PtsContext.cs
- PointIndependentAnimationStorage.cs
- SchemaElementDecl.cs
- AuthorizationPolicyTypeElement.cs
- DBConnection.cs
- RawKeyboardInputReport.cs
- LookupBindingPropertiesAttribute.cs
- TableLayoutRowStyleCollection.cs
- ExtendedProtectionPolicy.cs
- NodeFunctions.cs
- MembershipUser.cs
- WebPartCollection.cs
- Environment.cs
- DrawingBrush.cs
- PersonalizationProviderCollection.cs
- CharStorage.cs
- XmlSerializer.cs
- DataGridViewRowConverter.cs
- SiteMapNodeCollection.cs
- AddInEnvironment.cs
- BrowserCapabilitiesFactoryBase.cs
- XmlRawWriterWrapper.cs
- Span.cs
- SrgsRule.cs
- WebPartMovingEventArgs.cs
- XmlFileEditor.cs
- LicenseContext.cs
- LocationFactory.cs
- NameTable.cs
- TextClipboardData.cs
- QilReference.cs
- QueueProcessor.cs
- XPathCompileException.cs
- SortedDictionary.cs
- WeakEventManager.cs
- StandardToolWindows.cs
- CrossContextChannel.cs
- XPathMessageFilterElement.cs
- XPathDescendantIterator.cs
- UnsupportedPolicyOptionsException.cs
- BamlTreeNode.cs
- odbcmetadatafactory.cs
- LinkTarget.cs
- UnionExpr.cs
- TickBar.cs