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
- XmlSchemaType.cs
- CommonRemoteMemoryBlock.cs
- EditorZone.cs
- OrderedDictionary.cs
- HttpListenerException.cs
- SessionStateUtil.cs
- Single.cs
- SvcMapFileSerializer.cs
- NetworkInformationException.cs
- AlignmentYValidation.cs
- PointLightBase.cs
- GenericEnumConverter.cs
- TypeReference.cs
- EventMappingSettings.cs
- LogExtentCollection.cs
- GeometryConverter.cs
- _HeaderInfoTable.cs
- HtmlToClrEventProxy.cs
- AccessDataSourceView.cs
- EditingMode.cs
- AdPostCacheSubstitution.cs
- RbTree.cs
- Ref.cs
- XamlReader.cs
- WarningException.cs
- ConfigXmlCDataSection.cs
- TableTextElementCollectionInternal.cs
- ProxyManager.cs
- UInt64.cs
- DecimalAnimationUsingKeyFrames.cs
- QueryContinueDragEvent.cs
- WebPartZoneBase.cs
- WindowsListBox.cs
- ReadingWritingEntityEventArgs.cs
- ReadOnlyCollection.cs
- ValueUnavailableException.cs
- TypeGeneratedEventArgs.cs
- StateMachineWorkflow.cs
- MemberDomainMap.cs
- ActivityBindForm.Designer.cs
- SourceChangedEventArgs.cs
- _SSPISessionCache.cs
- PopupRoot.cs
- DataGridAddNewRow.cs
- StylusOverProperty.cs
- ControlDesignerState.cs
- SupportingTokenProviderSpecification.cs
- DataListAutoFormat.cs
- SessionStateContainer.cs
- SqlClientPermission.cs
- ping.cs
- MethodImplAttribute.cs
- XmlSequenceWriter.cs
- ServiceRouteHandler.cs
- SlotInfo.cs
- BooleanAnimationUsingKeyFrames.cs
- ReflectPropertyDescriptor.cs
- AliasExpr.cs
- SqlNodeTypeOperators.cs
- ContextMenu.cs
- SerialStream.cs
- XmlSerializationGeneratedCode.cs
- ExpressionBuilderCollection.cs
- WriteLine.cs
- SessionPageStateSection.cs
- LocationFactory.cs
- ListenUriMode.cs
- BookmarkUndoUnit.cs
- SoapExtension.cs
- PeerNameRecordCollection.cs
- DataKeyArray.cs
- MarkupExtensionParser.cs
- ThemeableAttribute.cs
- ObjectSecurity.cs
- ControlCachePolicy.cs
- SecurityVerifiedMessage.cs
- ColorEditor.cs
- PinnedBufferMemoryStream.cs
- DBSchemaRow.cs
- BevelBitmapEffect.cs
- EntityCommand.cs
- PrintingPermission.cs
- StatusBarItemAutomationPeer.cs
- ClientTargetCollection.cs
- FtpWebRequest.cs
- MILUtilities.cs
- EventProxy.cs
- ReflectionServiceProvider.cs
- RemoteTokenFactory.cs
- MappingSource.cs
- FilterableData.cs
- XPathMultyIterator.cs
- DPCustomTypeDescriptor.cs
- HttpUnhandledOperationInvoker.cs
- CngAlgorithmGroup.cs
- WebServiceFaultDesigner.cs
- KeyManager.cs
- CommandPlan.cs
- InputScopeConverter.cs
- ConnectionStringSettings.cs