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
- StringUtil.cs
- PseudoWebRequest.cs
- SqlRowUpdatedEvent.cs
- ReferenceConverter.cs
- SchemaRegistration.cs
- XMLSchema.cs
- GestureRecognitionResult.cs
- AudioFormatConverter.cs
- KeyFrames.cs
- Comparer.cs
- _Win32.cs
- DataGridViewHeaderCell.cs
- BasicKeyConstraint.cs
- ContainerUIElement3D.cs
- RectangleHotSpot.cs
- Vector3DAnimation.cs
- TemplateBamlTreeBuilder.cs
- FusionWrap.cs
- BuildDependencySet.cs
- HtmlControlPersistable.cs
- EncoderFallback.cs
- ClassHandlersStore.cs
- FileIOPermission.cs
- input.cs
- InputLangChangeEvent.cs
- RedirectionProxy.cs
- Region.cs
- Trigger.cs
- FormatterServices.cs
- COM2ICategorizePropertiesHandler.cs
- MultipartIdentifier.cs
- PolyBezierSegmentFigureLogic.cs
- LinkButton.cs
- SelectionPattern.cs
- DataBoundControlParameterTarget.cs
- DesignerMetadata.cs
- AdRotator.cs
- DefaultValueTypeConverter.cs
- PointConverter.cs
- SinglePhaseEnlistment.cs
- Matrix3DStack.cs
- ImageClickEventArgs.cs
- DefaultConfirmation.cs
- DataGridParentRows.cs
- ScrollBarRenderer.cs
- AccessText.cs
- RNGCryptoServiceProvider.cs
- ParseElement.cs
- DataSourceExpressionCollection.cs
- DelegateHelpers.Generated.cs
- PackWebResponse.cs
- TextParagraphView.cs
- ViewBase.cs
- QilParameter.cs
- DataGridViewRowEventArgs.cs
- TableRowGroup.cs
- ChildrenQuery.cs
- ToolStripItemEventArgs.cs
- ManagementEventWatcher.cs
- Types.cs
- _LocalDataStoreMgr.cs
- QueryAccessibilityHelpEvent.cs
- ContainerUIElement3D.cs
- ValidationHelpers.cs
- EventLogInformation.cs
- ReadOnlyDataSource.cs
- ToolStripGripRenderEventArgs.cs
- EditingMode.cs
- WebDescriptionAttribute.cs
- DataColumnMappingCollection.cs
- Rect3D.cs
- ComplexObject.cs
- AnimationTimeline.cs
- StatusBar.cs
- ServiceOperationListItem.cs
- FastPropertyAccessor.cs
- SqlHelper.cs
- Duration.cs
- SmiMetaData.cs
- DateTimeFormat.cs
- InternalsVisibleToAttribute.cs
- DocumentEventArgs.cs
- SqlDataSourceQueryEditor.cs
- ImportContext.cs
- DrawingAttributeSerializer.cs
- MetafileHeaderWmf.cs
- FormsAuthenticationUser.cs
- MsmqDecodeHelper.cs
- ComponentFactoryHelpers.cs
- InvokeMethodDesigner.xaml.cs
- ExchangeUtilities.cs
- DataColumnCollection.cs
- HierarchicalDataBoundControl.cs
- TypeUsage.cs
- XmlIgnoreAttribute.cs
- ProcessHostServerConfig.cs
- WorkerRequest.cs
- XPathEmptyIterator.cs
- basecomparevalidator.cs
- ExpressionBuilder.cs