Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / MsmqException.cs / 1 / MsmqException.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System.Text; using System.Globalization; using System.Runtime.Serialization; using System.Runtime.InteropServices; using System.ServiceModel.Channels; [Serializable] public class MsmqException : ExternalException { [NonSerialized] bool? faultSender = null; [NonSerialized] bool? faultReceiver = null; [NonSerialized] Type outerExceptionType = null; public MsmqException() { } public MsmqException(string message) : base(message) { } public MsmqException(string message, int error) : base(message, error) { } public MsmqException(string message, Exception inner) : base(message, inner) { } protected MsmqException(SerializationInfo info, StreamingContext context) : base(info, context) { } internal bool FaultSender { get { TuneBehavior(); return this.faultSender.Value; } } internal bool FaultReceiver { get { TuneBehavior(); return this.faultReceiver.Value; } } void TuneBehavior() { if (this.faultSender.HasValue && this.faultReceiver.HasValue) return; switch (this.ErrorCode) { // configuration erors case UnsafeNativeMethods.MQ_ERROR_ACCESS_DENIED: faultSender = true; faultReceiver = true; outerExceptionType = typeof(AddressAccessDeniedException); break; case UnsafeNativeMethods.MQ_ERROR_NO_INTERNAL_USER_CERT: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_QUEUE_DELETED: faultSender = true; faultReceiver = true; outerExceptionType = typeof(EndpointNotFoundException); break; case UnsafeNativeMethods.MQ_ERROR_QUEUE_NOT_FOUND: faultSender = true; faultReceiver = true; outerExceptionType = typeof(EndpointNotFoundException); break; case UnsafeNativeMethods.MQ_ERROR_CERTIFICATE_NOT_PROVIDED: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_INVALID_CERTIFICATE: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_CANNOT_CREATE_CERT_STORE: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_COULD_NOT_GET_USER_SID: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_ILLEGAL_FORMATNAME: faultSender = false; faultReceiver = false; outerExceptionType = typeof(ArgumentException); break; case UnsafeNativeMethods.MQ_ERROR_ILLEGAL_QUEUE_PATHNAME: faultSender = false; faultReceiver = false; outerExceptionType = typeof(ArgumentException); break; case UnsafeNativeMethods.MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION: faultSender = true; faultReceiver = true; outerExceptionType = typeof(ArgumentException); break; case UnsafeNativeMethods.MQ_ERROR_CANNOT_HASH_DATA_EX: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_CANNOT_SIGN_DATA_EX: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_FAIL_VERIFY_SIGNATURE_EX: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_BAD_SECURITY_CONTEXT: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_PRIVILEGE_NOT_HELD: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_SHARING_VIOLATION: faultSender = true; faultReceiver = true; outerExceptionType = typeof(AddressAccessDeniedException); break; // transient errors case UnsafeNativeMethods.MQ_ERROR_DTC_CONNECT: faultSender = false; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_IO_TIMEOUT: faultSender = false; faultReceiver = false; outerExceptionType = typeof(TimeoutException); break; case UnsafeNativeMethods.MQ_ERROR_QUEUE_NOT_AVAILABLE: faultSender = false; faultReceiver = true; outerExceptionType = typeof(EndpointNotFoundException); break; case UnsafeNativeMethods.MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE: faultSender = false; faultReceiver = true; outerExceptionType = typeof(EndpointNotFoundException); break; case UnsafeNativeMethods.MQ_ERROR_SERVICE_NOT_AVAILABLE: faultSender = false; faultReceiver = true; outerExceptionType = typeof(EndpointNotFoundException); break; case UnsafeNativeMethods.MQ_ERROR_INSUFFICIENT_RESOURCES: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_MESSAGE_STORAGE_FAILED: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_TRANSACTION_ENLIST: faultSender = false; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_TRANSACTION_IMPORT: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_TRANSACTION_USAGE: faultSender = true; faultReceiver = true; outerExceptionType = typeof(InvalidOperationException); break; case UnsafeNativeMethods.MQ_ERROR_STALE_HANDLE: faultSender = false; faultReceiver = false; outerExceptionType = typeof(InvalidOperationException); break; // malformed messages case UnsafeNativeMethods.MQ_ERROR_ILLEGAL_MQQMPROPS: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; case UnsafeNativeMethods.MQ_ERROR_INSUFFICIENT_PROPERTIES: faultSender = true; faultReceiver = true; outerExceptionType = typeof(CommunicationException); break; default: faultSender = true; faultReceiver = true; outerExceptionType = null; break; } } internal Exception Normalized { get { TuneBehavior(); if (null != this.outerExceptionType) return Activator.CreateInstance(this.outerExceptionType, new object[] { this.Message, this }) as Exception; else return this; } } } static class MsmqError { public static string GetErrorString(int error) { StringBuilder stringBuilder = new StringBuilder(512); bool result = false; if ((error & 0x0FFF0000) == 0x000E0000) { int formatFlags = UnsafeNativeMethods.FORMAT_MESSAGE_IGNORE_INSERTS | UnsafeNativeMethods.FORMAT_MESSAGE_ARGUMENT_ARRAY | UnsafeNativeMethods.FORMAT_MESSAGE_FROM_HMODULE; result = (0 != UnsafeNativeMethods.FormatMessage( formatFlags, Msmq.ErrorStrings, error, CultureInfo.CurrentCulture.LCID, stringBuilder, stringBuilder.Capacity, IntPtr.Zero)); } else { int formatFlags = UnsafeNativeMethods.FORMAT_MESSAGE_IGNORE_INSERTS | UnsafeNativeMethods.FORMAT_MESSAGE_ARGUMENT_ARRAY | UnsafeNativeMethods.FORMAT_MESSAGE_FROM_SYSTEM; result = (0 != UnsafeNativeMethods.FormatMessage( formatFlags, IntPtr.Zero, error, CultureInfo.CurrentCulture.LCID, stringBuilder, stringBuilder.Capacity, IntPtr.Zero)); } if (result) { stringBuilder = stringBuilder.Replace("\n", ""); stringBuilder = stringBuilder.Replace("\r", ""); return SR.GetString( SR.MsmqKnownWin32Error, stringBuilder.ToString(), error.ToString(CultureInfo.InvariantCulture), Convert.ToString(error, 16)); } else { return SR.GetString( SR.MsmqUnknownWin32Error, error.ToString(CultureInfo.InvariantCulture), Convert.ToString(error, 16)); } } } } // 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
- DataShape.cs
- WindowsImpersonationContext.cs
- BaseComponentEditor.cs
- ReflectionServiceProvider.cs
- ListManagerBindingsCollection.cs
- ColumnClickEvent.cs
- DesignerActionItem.cs
- CompiledQuery.cs
- InternalEnumValidator.cs
- DateTimeUtil.cs
- XmlCharType.cs
- Helper.cs
- DateTimeOffset.cs
- BasicKeyConstraint.cs
- UIElement3DAutomationPeer.cs
- RemotingServices.cs
- SplitContainer.cs
- ContentType.cs
- TextProperties.cs
- DataErrorValidationRule.cs
- ImportCatalogPart.cs
- SHA256CryptoServiceProvider.cs
- _FixedSizeReader.cs
- RuntimeHelpers.cs
- GridSplitterAutomationPeer.cs
- SpecialNameAttribute.cs
- WindowPatternIdentifiers.cs
- Missing.cs
- DeviceContext2.cs
- FileDataSourceCache.cs
- FieldNameLookup.cs
- AstTree.cs
- BlurEffect.cs
- OperandQuery.cs
- RoutedEvent.cs
- SafeNativeMemoryHandle.cs
- SqlMethodAttribute.cs
- DirectoryObjectSecurity.cs
- TemplateBaseAction.cs
- Encoder.cs
- CharacterMetricsDictionary.cs
- grammarelement.cs
- DBConnection.cs
- DiscreteKeyFrames.cs
- ImageSourceValueSerializer.cs
- ToReply.cs
- InputProviderSite.cs
- XmlQualifiedName.cs
- RootProfilePropertySettingsCollection.cs
- XmlObjectSerializer.cs
- AddInController.cs
- AttributedMetaModel.cs
- XmlWhitespace.cs
- Vector.cs
- SqlDataSourceSelectingEventArgs.cs
- MetadataReference.cs
- ScrollPattern.cs
- OptimizedTemplateContentHelper.cs
- COM2IDispatchConverter.cs
- ScrollEventArgs.cs
- MetadataArtifactLoaderCompositeResource.cs
- BCLDebug.cs
- SimpleMailWebEventProvider.cs
- LinkButton.cs
- DataTableMapping.cs
- HScrollProperties.cs
- IntPtr.cs
- sqlcontext.cs
- SettingsPropertyCollection.cs
- BackgroundWorker.cs
- StringSource.cs
- HttpResponse.cs
- LayoutEngine.cs
- ServiceObjectContainer.cs
- AccessViolationException.cs
- CodeExpressionCollection.cs
- XPathDescendantIterator.cs
- UnmanagedMarshal.cs
- RequestDescription.cs
- Tile.cs
- MobilePage.cs
- TextProviderWrapper.cs
- DataSourceExpression.cs
- ThicknessKeyFrameCollection.cs
- SQlBooleanStorage.cs
- TransformerInfo.cs
- JsonDataContract.cs
- FamilyCollection.cs
- NonVisualControlAttribute.cs
- ScriptBehaviorDescriptor.cs
- MessageDescription.cs
- FileClassifier.cs
- ScriptComponentDescriptor.cs
- Label.cs
- ClientRolePrincipal.cs
- ReflectionTypeLoadException.cs
- ReferencedType.cs
- InplaceBitmapMetadataWriter.cs
- CancelEventArgs.cs
- MouseWheelEventArgs.cs