Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / ErrorBehavior.cs / 1 / ErrorBehavior.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System; using System.ServiceModel.Channels; using System.ServiceModel; using System.Collections.ObjectModel; using System.Collections.Generic; using System.ServiceModel.Diagnostics; class ErrorBehavior { IErrorHandler[] handlers; bool debug; bool isOnServer; MessageVersion messageVersion; internal ErrorBehavior(ChannelDispatcher channelDispatcher) { this.handlers = EmptyArray.ToArray(channelDispatcher.ErrorHandlers); this.debug = channelDispatcher.IncludeExceptionDetailInFaults; this.isOnServer = channelDispatcher.IsOnServer; this.messageVersion = channelDispatcher.MessageVersion; } void InitializeFault(ref MessageRpc rpc) { Exception error = rpc.Error; FaultException fault = error as FaultException; if (fault != null) { string action; MessageFault messageFault = rpc.Operation.FaultFormatter.Serialize(fault, out action); if (action == null) action = rpc.RequestVersion.Addressing.DefaultFaultAction; if (messageFault != null) rpc.FaultInfo.Fault = Message.CreateMessage(rpc.RequestVersion, messageFault, action); } } internal IErrorHandler[] Handlers { get { return handlers; } } internal void ProvideMessageFault(ref MessageRpc rpc) { if (rpc.Error != null) { ProvideMessageFaultCore(ref rpc); } } void ProvideMessageFaultCore(ref MessageRpc rpc) { if (this.messageVersion != rpc.RequestVersion) { DiagnosticUtility.DebugAssert("System.ServiceModel.Dispatcher.ErrorBehavior.ProvideMessageFaultCore(): (this.messageVersion != rpc.RequestVersion)"); } this.InitializeFault(ref rpc); this.ProvideFault(rpc.Error, rpc.Channel.GetProperty (), ref rpc.FaultInfo); this.ProvideMessageFaultCoreCoda(ref rpc); } void ProvideFaultOfLastResort(Exception error, ref ErrorHandlerFaultInfo faultInfo) { if (faultInfo.Fault == null) { FaultCode code = new FaultCode(FaultCodeConstants.Codes.InternalServiceFault, FaultCodeConstants.Namespaces.NetDispatch); code = FaultCode.CreateReceiverFaultCode(code); string action = FaultCodeConstants.Actions.NetDispatcher; MessageFault fault; if (this.debug) { faultInfo.DefaultFaultAction = action; fault = MessageFault.CreateFault(code, new FaultReason(error.Message), new ExceptionDetail(error)); } else { string reason = this.isOnServer ? SR.GetString(SR.SFxInternalServerError) : SR.GetString(SR.SFxInternalCallbackError); fault = MessageFault.CreateFault(code, new FaultReason(reason)); } faultInfo.IsConsideredUnhandled = true; faultInfo.Fault = Message.CreateMessage(this.messageVersion, fault, action); } } void ProvideMessageFaultCoreCoda(ref MessageRpc rpc) { if (rpc.FaultInfo.Fault.Headers.Action == null) { rpc.FaultInfo.Fault.Headers.Action = rpc.RequestVersion.Addressing.DefaultFaultAction; } rpc.Reply = rpc.FaultInfo.Fault; } internal void ProvideOnlyFaultOfLastResort(ref MessageRpc rpc) { this.ProvideFaultOfLastResort(rpc.Error, ref rpc.FaultInfo); this.ProvideMessageFaultCoreCoda(ref rpc); } internal void ProvideFault(Exception e, FaultConverter faultConverter, ref ErrorHandlerFaultInfo faultInfo) { ProvideWellKnownFault(e, faultConverter, ref faultInfo); for (int i=0; i
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DictionarySectionHandler.cs
- FontFamilyValueSerializer.cs
- IgnoreFileBuildProvider.cs
- EntityCommand.cs
- ContainerSelectorBehavior.cs
- EncryptedKey.cs
- Walker.cs
- MemberHolder.cs
- _DomainName.cs
- AssociationType.cs
- FillErrorEventArgs.cs
- PopupControlService.cs
- TimeoutException.cs
- WebSysDefaultValueAttribute.cs
- OleDbParameterCollection.cs
- FixedPosition.cs
- OleDbMetaDataFactory.cs
- RawStylusActions.cs
- CngUIPolicy.cs
- InternalException.cs
- RemoteWebConfigurationHost.cs
- GeneralTransform3D.cs
- XslTransformFileEditor.cs
- DynamicFilterExpression.cs
- PropertyInfoSet.cs
- _AcceptOverlappedAsyncResult.cs
- LifetimeMonitor.cs
- PropertyItemInternal.cs
- ToolboxItemLoader.cs
- IDataContractSurrogate.cs
- ProcessExitedException.cs
- EntityCollectionChangedParams.cs
- FlowLayoutPanel.cs
- HeaderUtility.cs
- SchemaDeclBase.cs
- IntegerValidatorAttribute.cs
- GridViewCommandEventArgs.cs
- SlotInfo.cs
- propertytag.cs
- ComplexType.cs
- DataPagerField.cs
- Dynamic.cs
- SqlInternalConnectionSmi.cs
- ChangeNode.cs
- TypeGenericEnumerableViewSchema.cs
- DataStreamFromComStream.cs
- TransactionBridge.cs
- IntranetCredentialPolicy.cs
- StaticSiteMapProvider.cs
- Rectangle.cs
- DataKey.cs
- PropertyBuilder.cs
- GlyphRun.cs
- ViewStateException.cs
- RequestCachePolicy.cs
- Accessible.cs
- FrameworkName.cs
- MatrixCamera.cs
- SamlAuthorizationDecisionClaimResource.cs
- SafeEventLogWriteHandle.cs
- GcSettings.cs
- AtomMaterializerLog.cs
- BooleanKeyFrameCollection.cs
- ISAPIRuntime.cs
- SrgsElementFactoryCompiler.cs
- MyContact.cs
- DesignerVerbCollection.cs
- UrlPath.cs
- FontResourceCache.cs
- XmlBinaryWriter.cs
- XPathDocumentBuilder.cs
- ProviderSettings.cs
- KeyEvent.cs
- WebPartsSection.cs
- ObjectConverter.cs
- TypeUsageBuilder.cs
- DeclarationUpdate.cs
- StrongNameIdentityPermission.cs
- TextLine.cs
- XPathQilFactory.cs
- GridItemPatternIdentifiers.cs
- ContentWrapperAttribute.cs
- MonitoringDescriptionAttribute.cs
- ElapsedEventArgs.cs
- ObjectReaderCompiler.cs
- SafeEventLogReadHandle.cs
- TextServicesProperty.cs
- PeerName.cs
- AssemblyBuilder.cs
- ReaderContextStackData.cs
- LookupNode.cs
- ProjectionPathBuilder.cs
- EntityDataSourceContextDisposingEventArgs.cs
- ScrollItemPattern.cs
- SiteMapDataSource.cs
- HttpWebResponse.cs
- DocumentApplication.cs
- DragEvent.cs
- TableItemProviderWrapper.cs
- RequestStatusBarUpdateEventArgs.cs