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
- RowsCopiedEventArgs.cs
- FormViewUpdateEventArgs.cs
- TextTreeInsertUndoUnit.cs
- Brush.cs
- CompilerResults.cs
- ZoneIdentityPermission.cs
- HMACSHA384.cs
- Int16Animation.cs
- CatalogPart.cs
- MachineKeyConverter.cs
- RoutedEventArgs.cs
- FacetChecker.cs
- DbCommandDefinition.cs
- TextWriter.cs
- Label.cs
- XPathNode.cs
- CodeExporter.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- SocketAddress.cs
- DeviceContext2.cs
- ChildChangedEventArgs.cs
- SpeechSynthesizer.cs
- UIElementAutomationPeer.cs
- SafeEventLogWriteHandle.cs
- CustomSignedXml.cs
- NativeCppClassAttribute.cs
- AccessDataSource.cs
- TdsParserHelperClasses.cs
- TableLayoutStyleCollection.cs
- HeaderUtility.cs
- FixedNode.cs
- SynchronizedChannelCollection.cs
- Int16.cs
- StreamUpgradeProvider.cs
- XmlArrayItemAttributes.cs
- WarningException.cs
- FontNamesConverter.cs
- ParameterToken.cs
- DrawingCollection.cs
- WebChannelFactory.cs
- TextServicesCompartment.cs
- SQLInt64Storage.cs
- WinInetCache.cs
- ProxyWebPartConnectionCollection.cs
- ThrowHelper.cs
- CodeTypeOfExpression.cs
- COM2TypeInfoProcessor.cs
- CustomTypeDescriptor.cs
- MethodBody.cs
- RegexCode.cs
- Int64AnimationUsingKeyFrames.cs
- UserControlBuildProvider.cs
- Optimizer.cs
- LabelExpression.cs
- DelayLoadType.cs
- SqlInternalConnectionTds.cs
- UnsafeNetInfoNativeMethods.cs
- LiteralSubsegment.cs
- RemoteWebConfigurationHostStream.cs
- QilPatternFactory.cs
- CompilerParameters.cs
- JsonDeserializer.cs
- GuidTagList.cs
- ExeContext.cs
- XpsFont.cs
- SqlMultiplexer.cs
- FormsAuthenticationUserCollection.cs
- MemberDescriptor.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- WeakRefEnumerator.cs
- NativeMethods.cs
- EventToken.cs
- ControlCommandSet.cs
- SmtpClient.cs
- ListViewDeletedEventArgs.cs
- DesignerOptions.cs
- TypeDependencyAttribute.cs
- Int32Animation.cs
- ClientSession.cs
- UnknownWrapper.cs
- SizeF.cs
- TextElementAutomationPeer.cs
- SslStream.cs
- Events.cs
- GenericTransactionFlowAttribute.cs
- Matrix.cs
- UIElement3D.cs
- Processor.cs
- Table.cs
- XmlProcessingInstruction.cs
- ServicePointManagerElement.cs
- PersonalizationAdministration.cs
- XmlSchemaAttribute.cs
- MultiView.cs
- DialogDivider.cs
- PageThemeParser.cs
- TreeViewItemAutomationPeer.cs
- ValidatedControlConverter.cs
- RelatedCurrencyManager.cs
- NgenServicingAttributes.cs