Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / XmlSerializerFaultFormatter.cs / 2 / XmlSerializerFaultFormatter.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- using System; using System.Xml; using System.Text; using System.Reflection; using System.Diagnostics; using System.Xml.Serialization; using System.Runtime.Serialization; using System.Collections.Generic; using System.ServiceModel.Channels; using System.ServiceModel.Description; namespace System.ServiceModel.Dispatcher { class XmlSerializerFaultFormatter : FaultFormatter { SynchronizedCollectionxmlSerializerFaultContractInfos; internal XmlSerializerFaultFormatter(Type[] detailTypes, SynchronizedCollection xmlSerializerFaultContractInfos) : base(detailTypes) { Initialize(xmlSerializerFaultContractInfos); } internal XmlSerializerFaultFormatter(SynchronizedCollection faultContractInfoCollection, SynchronizedCollection xmlSerializerFaultContractInfos) : base(faultContractInfoCollection) { Initialize(xmlSerializerFaultContractInfos); } void Initialize(SynchronizedCollection xmlSerializerFaultContractInfos) { if (xmlSerializerFaultContractInfos == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("xmlSerializerFaultContractInfos"); } this.xmlSerializerFaultContractInfos = xmlSerializerFaultContractInfos; } protected override XmlObjectSerializer GetSerializer(Type detailType, string faultExceptionAction, out string action) { action = faultExceptionAction; XmlSerializerOperationBehavior.Reflector.XmlSerializerFaultContractInfo faultInfo = null; for (int i = 0; i < this.xmlSerializerFaultContractInfos.Count; i++) { if (this.xmlSerializerFaultContractInfos[i].FaultContractInfo.Detail == detailType) { faultInfo = this.xmlSerializerFaultContractInfos[i]; break; } } if (faultInfo != null) { if (action == null) action = faultInfo.FaultContractInfo.Action; return faultInfo.Serializer; } else return new XmlSerializerObjectSerializer(detailType); } protected override FaultException CreateFaultException(MessageFault messageFault, string action) { IList faultInfos; if (action != null) { faultInfos = new List (); for (int i = 0; i < this.xmlSerializerFaultContractInfos.Count; i++) { if (this.xmlSerializerFaultContractInfos[i].FaultContractInfo.Action == action || this.xmlSerializerFaultContractInfos[i].FaultContractInfo.Action == MessageHeaders.WildcardAction) { faultInfos.Add(this.xmlSerializerFaultContractInfos[i]); } } } else { faultInfos = this.xmlSerializerFaultContractInfos; } Type detailType = null; object detailObj = null; for (int i = 0; i < faultInfos.Count; i++) { XmlSerializerOperationBehavior.Reflector.XmlSerializerFaultContractInfo faultInfo = faultInfos[i]; XmlDictionaryReader detailReader = messageFault.GetReaderAtDetailContents(); XmlObjectSerializer serializer = faultInfo.Serializer; if (serializer.IsStartObject(detailReader)) { detailType = faultInfo.FaultContractInfo.Detail; try { detailObj = serializer.ReadObject(detailReader); FaultException faultException = CreateFaultException(messageFault, action, detailObj, detailType, detailReader); if (faultException != null) return faultException; } catch (SerializationException) { } } } return new FaultException(messageFault, action); } } } // 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
- SoapSchemaExporter.cs
- XmlSchemaAny.cs
- SecurityContext.cs
- configsystem.cs
- SortQuery.cs
- IndexedWhereQueryOperator.cs
- ViewManager.cs
- GridViewColumnCollectionChangedEventArgs.cs
- DbSourceCommand.cs
- PanelStyle.cs
- OrderedDictionary.cs
- InfiniteIntConverter.cs
- GridViewRowPresenter.cs
- DataViewManagerListItemTypeDescriptor.cs
- ServiceNameCollection.cs
- OutputScopeManager.cs
- WebPartMinimizeVerb.cs
- GorillaCodec.cs
- CompositeDataBoundControl.cs
- PageCache.cs
- Calendar.cs
- EFTableProvider.cs
- ClientTarget.cs
- FormsAuthenticationCredentials.cs
- GregorianCalendarHelper.cs
- RangeValuePattern.cs
- TextLine.cs
- TableCell.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- SrgsDocument.cs
- ConfigurationStrings.cs
- TypeUtils.cs
- BamlLocalizableResource.cs
- _PooledStream.cs
- DataGridHeaderBorder.cs
- NetworkAddressChange.cs
- HostExecutionContextManager.cs
- UIPropertyMetadata.cs
- Crc32Helper.cs
- CaseInsensitiveHashCodeProvider.cs
- BitmapPalette.cs
- TabControl.cs
- DataControlPagerLinkButton.cs
- ClientType.cs
- ControlParameter.cs
- FileVersion.cs
- XPathMessageFilterElementCollection.cs
- HttpCacheParams.cs
- EncoderReplacementFallback.cs
- Lasso.cs
- TraceUtils.cs
- FrameworkPropertyMetadata.cs
- IisNotInstalledException.cs
- FileSecurity.cs
- xmlNames.cs
- RegexWriter.cs
- AnimationTimeline.cs
- HttpCacheVaryByContentEncodings.cs
- Pair.cs
- HexParser.cs
- Screen.cs
- WindowsScrollBarBits.cs
- Stack.cs
- BitmapEffectInputConnector.cs
- FolderLevelBuildProviderCollection.cs
- CompleteWizardStep.cs
- WebEncodingValidator.cs
- StyleBamlTreeBuilder.cs
- FilterElement.cs
- TypefaceCollection.cs
- DataConnectionHelper.cs
- BrushConverter.cs
- Soap11ServerProtocol.cs
- EncoderExceptionFallback.cs
- FormCollection.cs
- NumberFormatInfo.cs
- COM2Properties.cs
- XmlCountingReader.cs
- BorderGapMaskConverter.cs
- DataGridCell.cs
- SolidColorBrush.cs
- HtmlTableRow.cs
- WizardDesigner.cs
- PropertyTabChangedEvent.cs
- XPathChildIterator.cs
- OdbcDataReader.cs
- CodeExpressionRuleDeclaration.cs
- Stroke.cs
- ConnectionsZoneAutoFormat.cs
- SplitterDesigner.cs
- Environment.cs
- ACE.cs
- FormDesigner.cs
- HealthMonitoringSection.cs
- DataGridViewComboBoxColumnDesigner.cs
- RegexBoyerMoore.cs
- HttpServerUtilityWrapper.cs
- PngBitmapDecoder.cs
- UnmanagedHandle.cs
- CacheDependency.cs