WebException.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / WebException.cs / 1305376 / WebException.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

 
namespace System.Net { 
    using System;
    using System.Diagnostics.CodeAnalysis; 
    using System.Runtime.Serialization;
    using System.Security.Permissions;

    /*++ 

    Abstract: 
 
        Contains the defintion for the WebException object. This is a subclass of
        Exception that contains a WebExceptionStatus and possible a reference to a 
        WebResponse.


    --*/ 

 
 
    /// 
    ///     
    ///       Provides network communication exceptions to the application.
    ///
    ///       This is the exception that is thrown by WebRequests when something untoward
    ///       happens. It's a subclass of WebException that contains a WebExceptionStatus and possibly 
    ///       a reference to a WebResponse. The WebResponse is only present if we actually
    ///       have a response from the remote server. 
    ///     
    /// 
    [Serializable] 
    public class WebException : InvalidOperationException, ISerializable {

        private WebExceptionStatus m_Status = WebExceptionStatus.UnknownError; //Should be changed to GeneralFailure;
        private WebResponse m_Response; 
        [NonSerialized]
        private WebExceptionInternalStatus m_InternalStatus = WebExceptionInternalStatus.RequestFatal; 
 

        ///  
        ///    
        ///       Creates a new instance of the 
        ///       class with the default status
        ///     from the 
        ///     values.
        ///     
        ///  
        public WebException() {
 
        }


        ///  
        ///    
        ///       Creates a new instance of the  class with the specified error 
        ///       message. 
        ///    
        ///  
        public WebException(string message) : this(message, null) {
        }

 
        /// 
        ///     
        ///       Creates a new instance of the  class with the specified error 
        ///       message and nested exception.
        /// 
        ///           Message         - Message string for exception.
        ///           InnerException  - Exception that caused this exception.
        ///
        ///     
        /// 
        public WebException(string message, Exception innerException) : 
            base(message, innerException) { 
        }
 
        public WebException(string message, WebExceptionStatus status) :
            this(message, null, status, null) {
        }
 

        ///  
        ///     
        ///       Creates a new instance of the  class with the specified error
        ///       message and status. 
        ///
        ///           Message         - Message string for exception.
        ///           Status          - Network status of exception
        ///     
        /// 
        internal WebException(string message, WebExceptionStatus status, WebExceptionInternalStatus internalStatus, Exception innerException) : 
            this(message, innerException, status, null, internalStatus) { 
        }
 
        /// 
        ///    
        ///       Creates a new instance of the  class with the specified error
        ///       message, nested exception, status and response. 
        ///
        ///           Message         - Message string for exception. 
        ///           InnerException  - The exception that caused this one. 
        ///           Status          - Network status of exception
        ///           Response        - The WebResponse we have. 
        ///    
        /// 
        public WebException(string message,
                            Exception innerException, 
                            WebExceptionStatus status,
                            WebResponse response) : 
            this(message, null, innerException, status, response) 
        { }
 
        internal WebException(string message, string data, Exception innerException, WebExceptionStatus status, WebResponse response) :
            base(message + (data != null ? ": '" + data + "'" : ""), innerException)
        {
            m_Status = status; 
            m_Response = response;
        } 
 
        internal WebException(string message,
                            Exception innerException, 
                            WebExceptionStatus status,
                            WebResponse response,
                            WebExceptionInternalStatus internalStatus) :
            this(message, null, innerException, status, response, internalStatus) 
        { }
 
        internal WebException(string message, string data, Exception innerException, WebExceptionStatus status, WebResponse response, WebExceptionInternalStatus internalStatus) : 
            base(message + (data != null ? ": '" + data + "'" : ""), innerException)
        { 
            m_Status = status;
            m_Response = response;
            m_InternalStatus = internalStatus;
        } 

 
        protected WebException(SerializationInfo serializationInfo, StreamingContext streamingContext) 
            : base(serializationInfo, streamingContext) {
           // m_Status = (WebExceptionStatus)serializationInfo.GetInt32("Status"); 
           // m_InternalStatus = (WebExceptionInternalStatus)serializationInfo.GetInt32("InternalStatus");
        }

        ///  

        [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase", Justification = "System.dll is still using pre-v4 security model and needs this demand")] 
        [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)] 
        void ISerializable.GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext)
        { 
            GetObjectData(serializationInfo, streamingContext);
        }

 
        [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase", Justification = "System.dll is still using pre-v4 security model and needs this demand")]
        [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)] 		 
        public override void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext){ 
            base.GetObjectData(serializationInfo, streamingContext);
            //serializationInfo.AddValue("Status", (int)m_Status, typeof(int)); 
            //serializationInfo.AddValue("InternalStatus", (int)m_InternalStatus, typeof(int));
        }

        ///  
        ///    
        ///       Gets the status of the response. 
        ///     
        /// 
        public WebExceptionStatus Status { 
            get {
                return m_Status;
            }
        } 

 
        ///  
        ///    
        ///       Gets the error message returned from the remote host. 
        ///    
        /// 
        public WebResponse Response {
            get { 
                return m_Response;
            } 
        } 

        ///  
        ///    
        ///       Gets the error message returned from the remote host.
        ///    
        ///  
        internal WebExceptionInternalStatus InternalStatus {
            get { 
                return m_InternalStatus; 
            }
        } 

    }; // class WebException

    internal enum WebExceptionInternalStatus { 
        RequestFatal      = 0,
        ServicePointFatal = 1, 
        Recoverable       = 2, 
        Isolated          = 3,
    } 


} // namespace System.Net

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK