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
- DetailsView.cs
- LabelDesigner.cs
- ISAPIRuntime.cs
- ThousandthOfEmRealPoints.cs
- DrawingDrawingContext.cs
- XmlSchemaSequence.cs
- Comparer.cs
- PrintPreviewGraphics.cs
- Inline.cs
- BoundField.cs
- SwitchLevelAttribute.cs
- ResourceManager.cs
- ConfigXmlWhitespace.cs
- SqlReferenceCollection.cs
- FixedTextContainer.cs
- TableLayoutStyle.cs
- TextPointerBase.cs
- xsdvalidator.cs
- DBSqlParserColumn.cs
- ASCIIEncoding.cs
- IisTraceListener.cs
- DataTableReaderListener.cs
- DictionaryGlobals.cs
- WindowsProgressbar.cs
- InputLanguageCollection.cs
- SpeechDetectedEventArgs.cs
- TextReader.cs
- HtmlTableCellCollection.cs
- RelatedCurrencyManager.cs
- Model3D.cs
- OwnerDrawPropertyBag.cs
- UriTemplateMatch.cs
- ImportCatalogPart.cs
- ChannelRequirements.cs
- EntityDataSourceContextDisposingEventArgs.cs
- LoginName.cs
- XAMLParseException.cs
- UpdatePanel.cs
- DeferredTextReference.cs
- ProfileProvider.cs
- SmtpClient.cs
- EncryptedReference.cs
- Floater.cs
- HybridCollection.cs
- ExpandedWrapper.cs
- SHA256Managed.cs
- SHA1CryptoServiceProvider.cs
- DesignerDataConnection.cs
- IPAddress.cs
- PluralizationService.cs
- Visual3D.cs
- Duration.cs
- DesignerCategoryAttribute.cs
- TransformCryptoHandle.cs
- CacheOutputQuery.cs
- DateTimeValueSerializerContext.cs
- Comparer.cs
- TimelineClockCollection.cs
- EmptyControlCollection.cs
- ReadOnlyNameValueCollection.cs
- ConfigXmlAttribute.cs
- StylusCollection.cs
- EntityDataSourceDataSelection.cs
- Message.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- DesignerTransaction.cs
- ToolStripDropDownClosingEventArgs.cs
- DesignerLinkAdapter.cs
- SoundPlayer.cs
- ObjectQueryProvider.cs
- Utils.cs
- ProgressBarRenderer.cs
- MenuItemAutomationPeer.cs
- EntityCollection.cs
- QilReference.cs
- HttpPostClientProtocol.cs
- Ports.cs
- MonikerProxyAttribute.cs
- FormView.cs
- SingleObjectCollection.cs
- DocumentViewerBaseAutomationPeer.cs
- RealizationContext.cs
- XmlHelper.cs
- SecureConversationSecurityTokenParameters.cs
- EdmRelationshipRoleAttribute.cs
- RawKeyboardInputReport.cs
- HorizontalAlignConverter.cs
- HideDisabledControlAdapter.cs
- ArgumentsParser.cs
- TransactionsSectionGroup.cs
- ZipIOCentralDirectoryBlock.cs
- Blend.cs
- DefaultValueTypeConverter.cs
- TextRangeProviderWrapper.cs
- XMLSchema.cs
- SqlCacheDependencySection.cs
- Lazy.cs
- RadialGradientBrush.cs
- Ray3DHitTestResult.cs
- PageWrapper.cs