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
- SetterBaseCollection.cs
- NativeMethods.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- GAC.cs
- MenuItemStyle.cs
- ClientRuntimeConfig.cs
- UpdateCompiler.cs
- ListDictionaryInternal.cs
- ScrollProperties.cs
- UrlMappingsSection.cs
- WebPartDisplayModeEventArgs.cs
- TraceSection.cs
- UnicastIPAddressInformationCollection.cs
- DictionarySectionHandler.cs
- HttpGetServerProtocol.cs
- WindowsListViewItemStartMenu.cs
- HyperlinkAutomationPeer.cs
- GridView.cs
- LayoutEngine.cs
- CreateUserWizard.cs
- ExternalDataExchangeService.cs
- WindowsScroll.cs
- StorageMappingItemLoader.cs
- XmlSchemaSimpleTypeUnion.cs
- SqlClientFactory.cs
- CallContext.cs
- WebUtil.cs
- StringFreezingAttribute.cs
- IApplicationTrustManager.cs
- MemberDomainMap.cs
- InvokeProviderWrapper.cs
- CapabilitiesRule.cs
- RealProxy.cs
- CompilerGeneratedAttribute.cs
- ToggleButtonAutomationPeer.cs
- DataControlImageButton.cs
- XPathPatternParser.cs
- PackageController.cs
- safesecurityhelperavalon.cs
- WSSecurityOneDotOneReceiveSecurityHeader.cs
- QilIterator.cs
- TreeViewImageIndexConverter.cs
- Vars.cs
- NativeMethods.cs
- DummyDataSource.cs
- OleDbParameterCollection.cs
- CodeGen.cs
- UnsafeNativeMethods.cs
- MediaElement.cs
- AspCompat.cs
- ReturnEventArgs.cs
- AnchorEditor.cs
- BooleanStorage.cs
- CompositionAdorner.cs
- EncodingDataItem.cs
- DownloadProgressEventArgs.cs
- TransformedBitmap.cs
- TextTrailingWordEllipsis.cs
- ArcSegment.cs
- BitmapEffectGroup.cs
- VarRemapper.cs
- DynamicMethod.cs
- TableCellAutomationPeer.cs
- PropertyState.cs
- EntityViewContainer.cs
- SharedPerformanceCounter.cs
- ImageFormatConverter.cs
- AuthenticationSection.cs
- AmbientEnvironment.cs
- DataGridViewRowPostPaintEventArgs.cs
- uribuilder.cs
- JsonCollectionDataContract.cs
- HTTPRemotingHandler.cs
- IdentityNotMappedException.cs
- ExpandSegmentCollection.cs
- HyperlinkAutomationPeer.cs
- ListItem.cs
- BindingContext.cs
- VerificationAttribute.cs
- UriTemplateClientFormatter.cs
- _CommandStream.cs
- ContractMapping.cs
- QueryTask.cs
- SequenceDesigner.cs
- SourceCollection.cs
- MessageQueueKey.cs
- CreateUserWizardStep.cs
- oledbmetadatacolumnnames.cs
- XmlSchemaRedefine.cs
- ToolStripItemCollection.cs
- NativeBuffer.cs
- SqlCommandBuilder.cs
- DataGridViewComboBoxEditingControl.cs
- QueryPageSettingsEventArgs.cs
- CompositeScriptReference.cs
- COM2ExtendedTypeConverter.cs
- DataGridViewCellParsingEventArgs.cs
- PolicyStatement.cs
- securestring.cs
- KeyInterop.cs