Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / ExceptionHandler.cs / 1 / ExceptionHandler.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System.Runtime.ConstrainedExecution; using System.Diagnostics; using System.ServiceModel; using System.ServiceModel.Diagnostics; using System.Security.Permissions; using System.Security; public abstract class ExceptionHandler { static readonly ExceptionHandler alwaysHandle = new AlwaysHandleExceptionHandler(); ////// Critical - this delegate is called from within a ConstrainedExecutionRegion /// must not be settable from PT code /// [SecurityCritical] static ExceptionHandler asynchronousThreadExceptionHandler; static ExceptionHandler transportExceptionHandler = alwaysHandle; public static ExceptionHandler AlwaysHandle { get { return alwaysHandle; } } public static ExceptionHandler AsynchronousThreadExceptionHandler { ////// Critical - access critical field /// Safe - ok for get-only access /// [SecurityCritical, SecurityTreatAsSafe] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] get { return asynchronousThreadExceptionHandler; } ////// Critical - sets a critical field /// Safe - protected with LinkDemand /// [SecurityCritical, SecurityTreatAsSafe] [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] set { asynchronousThreadExceptionHandler = value; } } public static ExceptionHandler TransportExceptionHandler { get { return transportExceptionHandler; } set { transportExceptionHandler = value; } } // Returns true if the exception has been handled. If it returns false or // throws a different exception, the original exception will be rethrown. public abstract bool HandleException(Exception exception); class AlwaysHandleExceptionHandler : ExceptionHandler { ////// RequiresReview - this function can be called from within a CER, must not call into PT code /// [SecurityRequiresReview] public override bool HandleException(Exception exception) { return true; } } internal static bool HandleTransportExceptionHelper(Exception exception) { if (exception == null) { DiagnosticUtility.DebugAssert("Null exception passed to HandleTransportExceptionHelper."); throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } ExceptionHandler handler = TransportExceptionHandler; if (handler == null) { return false; } try { if (!handler.HandleException(exception)) { return false; } } catch (Exception thrownException) { if (DiagnosticUtility.IsFatal(thrownException)) { throw; } if (DiagnosticUtility.ShouldTraceError) { DiagnosticUtility.ExceptionUtility.TraceHandledException(thrownException, TraceEventType.Error); } return false; } if (DiagnosticUtility.ShouldTraceError) { DiagnosticUtility.ExceptionUtility.TraceHandledException(exception, TraceEventType.Error); } return true; } } } // 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
- DbExpressionVisitor_TResultType.cs
- SecurityManager.cs
- TabControlEvent.cs
- XmlStrings.cs
- ColumnMapCopier.cs
- PointCollection.cs
- XmlSortKeyAccumulator.cs
- MaskDesignerDialog.cs
- FileDialogCustomPlacesCollection.cs
- SvcMapFile.cs
- ConfigXmlSignificantWhitespace.cs
- COM2Properties.cs
- WebScriptServiceHost.cs
- SqlDataSourceStatusEventArgs.cs
- UriTemplateMatch.cs
- Frame.cs
- TraceEventCache.cs
- WebExceptionStatus.cs
- PersistenceTypeAttribute.cs
- FigureParaClient.cs
- StartUpEventArgs.cs
- StringReader.cs
- remotingproxy.cs
- PrintingPermission.cs
- DynamicDataExtensions.cs
- FormViewDeletedEventArgs.cs
- NaturalLanguageHyphenator.cs
- Renderer.cs
- HtmlTableCell.cs
- ConsoleKeyInfo.cs
- Options.cs
- InfoCardRSACryptoProvider.cs
- Missing.cs
- XmlNodeChangedEventArgs.cs
- ProcessInputEventArgs.cs
- HttpCachePolicyElement.cs
- TraceRecord.cs
- CommandDesigner.cs
- CodeSnippetStatement.cs
- RootAction.cs
- DurableEnlistmentState.cs
- GenericWebPart.cs
- DoubleStorage.cs
- Sentence.cs
- CopyAction.cs
- SqlDataSourceConnectionPanel.cs
- ResourceBinder.cs
- KeyNotFoundException.cs
- EllipseGeometry.cs
- URIFormatException.cs
- MenuScrollingVisibilityConverter.cs
- DomainUpDown.cs
- InternalConfigRoot.cs
- XmlSchemaProviderAttribute.cs
- DataGridParentRows.cs
- HandlerBase.cs
- ProcessHost.cs
- TextEmbeddedObject.cs
- CoreSwitches.cs
- ComponentResourceKeyConverter.cs
- ExpressionBuilder.cs
- sqlcontext.cs
- VarInfo.cs
- OdbcDataReader.cs
- EdmItemCollection.OcAssemblyCache.cs
- X500Name.cs
- WasEndpointConfigContainer.cs
- PropertyValueUIItem.cs
- Debug.cs
- NoPersistScope.cs
- Metadata.cs
- ReceiveCompletedEventArgs.cs
- CodeSnippetStatement.cs
- XmlTextReaderImplHelpers.cs
- CompositeCollection.cs
- FormsAuthentication.cs
- TypeReference.cs
- DES.cs
- IQueryable.cs
- GuidelineCollection.cs
- Double.cs
- SiteMapProvider.cs
- HideDisabledControlAdapter.cs
- EmptyReadOnlyDictionaryInternal.cs
- WebPartTransformerCollection.cs
- ProfileGroupSettingsCollection.cs
- wgx_render.cs
- MemoryMappedFile.cs
- ExpressionEvaluator.cs
- RequestCache.cs
- OracleNumber.cs
- DurableInstanceManager.cs
- StringCollection.cs
- LogPolicy.cs
- complextypematerializer.cs
- PartialClassGenerationTask.cs
- Triplet.cs
- SiteMapNodeItemEventArgs.cs
- ServiceDesigner.cs
- FusionWrap.cs