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
- HierarchicalDataSourceDesigner.cs
- _SslStream.cs
- SqlFileStream.cs
- WebConfigurationHost.cs
- ContentValidator.cs
- WebContext.cs
- TextViewDesigner.cs
- ScopelessEnumAttribute.cs
- StringComparer.cs
- CodeChecksumPragma.cs
- InteropBitmapSource.cs
- ProvideValueServiceProvider.cs
- ShapingWorkspace.cs
- DataListItemCollection.cs
- DefaultValueAttribute.cs
- ZipIORawDataFileBlock.cs
- ImportCatalogPart.cs
- UniformGrid.cs
- AuditLog.cs
- remotingproxy.cs
- CatalogPartCollection.cs
- OutputCacheProfile.cs
- ListView.cs
- IApplicationTrustManager.cs
- SerializationHelper.cs
- basemetadatamappingvisitor.cs
- PackageStore.cs
- XmlUtil.cs
- MergeFailedEvent.cs
- WpfKnownTypeInvoker.cs
- DataGridViewCellFormattingEventArgs.cs
- DiagnosticsConfigurationHandler.cs
- UniqueIdentifierService.cs
- GradientBrush.cs
- DynamicValueConverter.cs
- TemplatedAdorner.cs
- CipherData.cs
- PrivilegeNotHeldException.cs
- ColorDialog.cs
- TextSearch.cs
- DBConnectionString.cs
- JapaneseCalendar.cs
- ReferencedAssembly.cs
- IntSecurity.cs
- OleDbRowUpdatedEvent.cs
- Double.cs
- UrlMapping.cs
- DesignerActionHeaderItem.cs
- DataSourceExpression.cs
- Rss20ItemFormatter.cs
- XmlStreamStore.cs
- MetadataUtilsSmi.cs
- LinqTreeNodeEvaluator.cs
- BookmarkTable.cs
- MsmqHostedTransportConfiguration.cs
- TreeViewCancelEvent.cs
- SafeUserTokenHandle.cs
- OutputCacheProfileCollection.cs
- PresentationTraceSources.cs
- Queue.cs
- ValidationResults.cs
- AppPool.cs
- Errors.cs
- DateTimeFormat.cs
- InvokeWebServiceDesigner.cs
- XmlQualifiedName.cs
- SortFieldComparer.cs
- PartialCachingControl.cs
- FamilyMap.cs
- EqualityArray.cs
- EventHandlerList.cs
- DataGridViewRowCancelEventArgs.cs
- PersonalizableTypeEntry.cs
- ObjectTypeMapping.cs
- CDSCollectionETWBCLProvider.cs
- PolicyLevel.cs
- RadioButtonPopupAdapter.cs
- SqlColumnizer.cs
- XmlSchemaAnnotated.cs
- _DigestClient.cs
- DynamicDataExtensions.cs
- WebPartUtil.cs
- InstanceData.cs
- HandlerBase.cs
- xmlformatgeneratorstatics.cs
- CodeArrayCreateExpression.cs
- PropertyIDSet.cs
- DataGridViewButtonColumn.cs
- XmlnsPrefixAttribute.cs
- XmlEntityReference.cs
- Application.cs
- _HelperAsyncResults.cs
- SqlVisitor.cs
- AnnotationAuthorChangedEventArgs.cs
- NativeRightsManagementAPIsStructures.cs
- Speller.cs
- NativeRightsManagementAPIsStructures.cs
- UnSafeCharBuffer.cs
- FlowNode.cs
- ComponentResourceManager.cs