//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace System.ServiceModel { using System.Globalization; using System.Runtime.Serialization; using System.ServiceModel.Channels; [Serializable] public class ProtocolException : CommunicationException { public ProtocolException() { } public ProtocolException(string message) : base(message) { } public ProtocolException(string message, Exception innerException) : base(message, innerException) { } protected ProtocolException(SerializationInfo info, StreamingContext context) : base(info, context) { } internal static ProtocolException ReceiveShutdownReturnedNonNull(Message message) { if (message.IsFault) { try { MessageFault fault = MessageFault.CreateFault(message, 64 * 1024); FaultReasonText reason = fault.Reason.GetMatchingTranslation(CultureInfo.CurrentCulture); string text = SR.GetString(SR.ReceiveShutdownReturnedFault, reason.Text); return new ProtocolException(text); } catch (QuotaExceededException) { string text = SR.GetString(SR.ReceiveShutdownReturnedLargeFault, message.Headers.Action); return new ProtocolException(text); } } else { string text = SR.GetString(SR.ReceiveShutdownReturnedMessage, message.Headers.Action); return new ProtocolException(text); } } internal static ProtocolException OneWayOperationReturnedNonNull(Message message) { if (message.IsFault) { try { MessageFault fault = MessageFault.CreateFault(message, 64 * 1024); FaultReasonText reason = fault.Reason.GetMatchingTranslation(CultureInfo.CurrentCulture); string text = SR.GetString(SR.OneWayOperationReturnedFault, reason.Text); return new ProtocolException(text); } catch (QuotaExceededException) { string text = SR.GetString(SR.OneWayOperationReturnedLargeFault, message.Headers.Action); return new ProtocolException(text); } } else { string text = SR.GetString(SR.OneWayOperationReturnedMessage, message.Headers.Action); return new ProtocolException(text); } } } }