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
- CustomErrorsSectionWrapper.cs
- RequestChannelBinder.cs
- Stackframe.cs
- OdbcConnectionOpen.cs
- DataGridViewRow.cs
- DefaultCommandExtensionCallback.cs
- WebBrowserContainer.cs
- HttpProfileBase.cs
- TextTreeNode.cs
- ListViewUpdatedEventArgs.cs
- Soap.cs
- XmlEncoding.cs
- Random.cs
- Camera.cs
- TemplateAction.cs
- BindingSource.cs
- XmlBinaryWriterSession.cs
- XamlRtfConverter.cs
- InlineObject.cs
- BasicExpandProvider.cs
- WebPartMenu.cs
- MobileUserControl.cs
- RadioButton.cs
- XmlAttributeOverrides.cs
- BoolExpressionVisitors.cs
- ZipIOFileItemStream.cs
- TransformationRules.cs
- EventBuilder.cs
- DataGridClipboardHelper.cs
- DataGridViewCellStyleEditor.cs
- XmlHierarchicalEnumerable.cs
- ListViewInsertedEventArgs.cs
- ArgumentOutOfRangeException.cs
- ShaderEffect.cs
- ToolStripComboBox.cs
- LocalizedNameDescriptionPair.cs
- RightNameExpirationInfoPair.cs
- ConfigurationSectionGroupCollection.cs
- ProfilePropertyNameValidator.cs
- ArgumentException.cs
- Msmq3PoisonHandler.cs
- SelectionListDesigner.cs
- SharedUtils.cs
- TemplateEditingVerb.cs
- FormsAuthenticationModule.cs
- ISO2022Encoding.cs
- StringAttributeCollection.cs
- Event.cs
- XmlProcessingInstruction.cs
- CodeSnippetCompileUnit.cs
- ConsoleEntryPoint.cs
- OrderPreservingPipeliningSpoolingTask.cs
- CodeArgumentReferenceExpression.cs
- GuidConverter.cs
- SettingsBase.cs
- PointIndependentAnimationStorage.cs
- AspProxy.cs
- InputLangChangeRequestEvent.cs
- DashStyle.cs
- TagMapCollection.cs
- AutomationPropertyInfo.cs
- EditingScope.cs
- ISAPIRuntime.cs
- StrongName.cs
- ExpressionBuilderCollection.cs
- ConfigXmlWhitespace.cs
- Avt.cs
- WFItemsToSpacerVisibility.cs
- InputLanguageManager.cs
- FormViewInsertEventArgs.cs
- ReferenceConverter.cs
- FormatException.cs
- SafeArrayRankMismatchException.cs
- StateMachine.cs
- DbDeleteCommandTree.cs
- CompareValidator.cs
- HttpCacheVary.cs
- Oid.cs
- SqlDataSourceCache.cs
- SecureConversationSecurityTokenParameters.cs
- RegistrySecurity.cs
- KeyboardEventArgs.cs
- AudioDeviceOut.cs
- COM2IPerPropertyBrowsingHandler.cs
- RequestQueue.cs
- initElementDictionary.cs
- Config.cs
- PropertyChangeTracker.cs
- TreeNodeEventArgs.cs
- DataExpression.cs
- BindingBase.cs
- SafeUserTokenHandle.cs
- StylusCollection.cs
- TextHidden.cs
- DbConnectionHelper.cs
- SettingsPropertyWrongTypeException.cs
- AssertFilter.cs
- Visual.cs
- EntityStoreSchemaGenerator.cs
- UseManagedPresentationElement.cs