C# System.Net.WebRequest 类

#region 程序集 System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.dll
#endregion

using System.ComponentModel;
using System.IO;
using System.Net.Cache;
using System.Net.Security;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Security.Cryptography.X509Certificates;

namespace System.Net {
    //
    // 摘要:
    //     提供 System.Net.WebRequest 类的 HTTP 特定的实现。
    [FriendAccessAllowedAttribute]
    public class HttpWebRequest : WebRequest, ISerializable {
        //
        // 摘要:
        //     初始化 System.Net.HttpWebRequest 类的新实例。
        [EditorBrowsable(EditorBrowsableState.Never)]
        [Obsolete("This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.", true)]
        public HttpWebRequest();
        //
        // 摘要:
        //     从 System.Runtime.Serialization.SerializationInfo 和 System.Runtime.Serialization.StreamingContext
        //     类的指定实例初始化 System.Net.HttpWebRequest 类的新实例。
        //
        // 参数:
        //   serializationInfo:
        //     System.Runtime.Serialization.SerializationInfo 对象,包含序列化新 System.Net.HttpWebRequest
        //     对象所需的信息。
        //
        //   streamingContext:
        //     System.Runtime.Serialization.StreamingContext 对象,包含与新 System.Net.HttpWebRequest
        //     对象关联的序列化流的源和目标。
        [Obsolete("Serialization is obsoleted for this type.  http://go.microsoft.com/fwlink/?linkid=14202")]
        protected HttpWebRequest(SerializationInfo serializationInfo, StreamingContext streamingContext);

        //
        // 摘要:
        //     获取或设置此请求的默认缓存策略。
        //
        // 返回结果:
        //     一个 System.Net.Cache.HttpRequestCachePolicy,它指定当没有其他策略适用时对此请求有效的缓存策略。
        public static RequestCachePolicy DefaultCachePolicy { get; set; }
        //
        // 摘要:
        //     获取或设置 HTTP 错误响应的默认最大长度。
        //
        // 返回结果:
        //     HTTP 错误响应的默认最大长度。
        //
        // 异常:
        //   T:System.ArgumentOutOfRangeException:
        //     该值小于 0 并且不等于 -1。
        public static int DefaultMaximumErrorResponseLength { get; set; }
        //
        // 摘要:
        //     获取或设置 System.Net.HttpWebRequest.MaximumResponseHeadersLength 属性的默认值。
        //
        // 返回结果:
        //     接收的响应标头的默认最大长度,以 KB(1024 字节)为单位。默认配置文件将此值设置为 64 KB。
        //
        // 异常:
        //   T:System.ArgumentOutOfRangeException:
        //     该值不等于 -1 且小于 0。
        public static int DefaultMaximumResponseHeadersLength { get; set; }
        //
        // 摘要:
        //     获取或设置 Accept HTTP 标头的值。
        //
        // 返回结果:
        //     Accept HTTP 标头的值。默认值为 null。
        public string Accept { get; set; }
        //
        // 摘要:
        //     获取实际响应请求的 Internet 资源的统一资源标识符 (URI)。
        //
        // 返回结果:
        //     System.Uri,标识实际响应请求的 Internet 资源。默认值是供 System.Net.WebRequest.Create(System.String)
        //     方法用来初始化请求的 URI。
        public Uri Address { get; }
        //
        // 摘要:
        //     获取或设置一个值,该值指示请求是否应跟随重定向响应。
        //
        // 返回结果:
        //     如果请求应自动跟随 Internet 资源的重定向响应,则为 true,否则为 false。默认值为 true。
        public virtual bool AllowAutoRedirect { get; set; }
        //
        // 摘要:
        //     获取或设置一个值,该值指示是否对从 Internet 资源接收的数据进行缓冲处理。
        //
        // 返回结果:
        //     true要缓冲接收到来自 Internet 资源 ;否则为false。true 允许对从 Internet 资源接收的数据进行缓冲处理,false 禁用缓冲处理。默认值为
        //     true。
        public virtual bool AllowReadStreamBuffering { get; set; }
        //
        // 摘要:
        //     获取或设置一个值,该值指示是否对发送到 Internet 资源的数据进行缓冲处理。
        //
        // 返回结果:
        //     true 允许对发送到 Internet 资源的数据进行缓冲处理,false 禁用缓冲处理。默认值为 true。
        public virtual bool AllowWriteStreamBuffering { get; set; }
        //
        // 摘要:
        //     获取或设置所使用的解压缩类型。
        //
        // 返回结果:
        //     一个 T:System.Net.DecompressionMethods 对象,该对象指示所使用的解压缩类型。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     对象的当前状态不允许设置此属性。
        public DecompressionMethods AutomaticDecompression { get; set; }
        //
        // 摘要:
        //     获取或设置与此请求关联的安全证书集合。
        //
        // 返回结果:
        //     System.Security.Cryptography.X509Certificates.X509CertificateCollection,包含与此请求关联的安全证书。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     为 Set 操作指定的值为 null。
        public X509CertificateCollection ClientCertificates { get; set; }
        //
        // 摘要:
        //     获取或设置 Connection HTTP 标头的值。
        //
        // 返回结果:
        //     Connection HTTP 标头的值。默认值为 null。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     将 System.Net.HttpWebRequest.Connection 的值设置为 Keep-alive 或 Close。
        public string Connection { get; set; }
        //
        // 摘要:
        //     获取或设置请求的连接组的名称。
        //
        // 返回结果:
        //     该请求的连接组的名称。默认值为 null。
        public override string ConnectionGroupName { get; set; }
        //
        // 摘要:
        //     获取或设置 Content-lengthHTTP 标头。
        //
        // 返回结果:
        //     要发送到 Internet 资源的数据的字节数。默认值为 -1,该值指示尚未设置该属性,并且没有要发送的请求数据。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     已通过调用 System.Net.HttpWebRequest.GetRequestStream、System.Net.HttpWebRequest.BeginGetRequestStream(System.AsyncCallback,System.Object)、System.Net.HttpWebRequest.GetResponse
        //     或 System.Net.HttpWebRequest.BeginGetResponse(System.AsyncCallback,System.Object)
        //     方法启动了该请求。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     新的 System.Net.HttpWebRequest.ContentLength 值小于 0。
        public override long ContentLength { get; set; }
        //
        // 摘要:
        //     获取或设置 Content-type HTTP 标头的值。
        //
        // 返回结果:
        //     Content-type HTTP 标头的值。默认值为 null。
        public override string ContentType { get; set; }
        //
        // 摘要:
        //     获取或设置当从 Internet 资源接收到 HTTP 100-continue 响应时调用的委托方法。
        //
        // 返回结果:
        //     实现回调方法的委托,该方法在从 Internet 资源返回 HTTP Continue 响应时执行。默认值为 null。
        public HttpContinueDelegate ContinueDelegate { get; set; }
        //
        // 摘要:
        //     获取或设置在接收到来自服务器的 100 次连续响应之前要等待的超时(以毫秒为单位)。
        //
        // 返回结果:
        //     在接收到 100-Continue 之前要等待的超时(以毫秒为单位)。
        public int ContinueTimeout { get; set; }
        //
        // 摘要:
        //     获取或设置与此请求关联的 Cookie。
        //
        // 返回结果:
        //     包含与此请求关联的 Cookie 的 System.Net.CookieContainer。
        public virtual CookieContainer CookieContainer { get; set; }
        //
        // 摘要:
        //     获取或设置请求的身份验证信息。
        //
        // 返回结果:
        //     包含与该请求关联的身份验证凭据的 System.Net.ICredentials。默认值为 null。
        public override ICredentials Credentials { get; set; }
        //
        // 摘要:
        //     获取或设置要在 HTTP 请求中使用的 Date HTTP 标头值。
        //
        // 返回结果:
        //     HTTP 请求中的 Date 标头值。
        public DateTime Date { get; set; }
        //
        // 摘要:
        //     获取或设置 Expect HTTP 标头的值。
        //
        // 返回结果:
        //     ExpectHTTP 标头的内容。默认值为 null。说明此属性的值存储在 System.Net.WebHeaderCollection 中。如果设置了
        //     WebHeaderCollection,则该属性值将丢失。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     Expect 被设置为一个包含“100-continue”(作为子字符串)的字符串。
        public string Expect { get; set; }
        //
        // 摘要:
        //     获取一个值,该值指示是否收到了来自 Internet 资源的响应。
        //
        // 返回结果:
        //     如果接收到了响应,则为 true,否则为 false。
        public virtual bool HaveResponse { get; }
        //
        // 摘要:
        //     指定构成 HTTP 标头的名称/值对的集合。
        //
        // 返回结果:
        //     包含构成 HTTP 请求标头的名称/值对的 System.Net.WebHeaderCollection。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     已通过调用 System.Net.HttpWebRequest.GetRequestStream、System.Net.HttpWebRequest.BeginGetRequestStream(System.AsyncCallback,System.Object)、System.Net.HttpWebRequest.GetResponse
        //     或 System.Net.HttpWebRequest.BeginGetResponse(System.AsyncCallback,System.Object)
        //     方法启动了该请求。
        public override WebHeaderCollection Headers { get; set; }
        //
        // 摘要:
        //     获取或设置要在 HTTP 请求中独立于请求 URI 使用的 Host 标头值。
        //
        // 返回结果:
        //     HTTP 请求中的 Host 标头值。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     不能将主机标头设置为 null。
        //
        //   T:System.ArgumentException:
        //     不能将主机标头设置为无效值。
        //
        //   T:System.InvalidOperationException:
        //     在已经开始发送 System.Net.HttpWebRequest 之后,不能设置主机标头。
        public string Host { get; set; }
        //
        // 摘要:
        //     获取或设置 If-Modified-Since HTTP 标头的值。
        //
        // 返回结果:
        //     包含 If-Modified-SinceHTTP 标头内容的 System.DateTime。默认值是当前日期和时间。
        public DateTime IfModifiedSince { get; set; }
        //
        // 摘要:
        //     获取或设置一个值,该值指示是否与 Internet 资源建立持续型连接。
        //
        // 返回结果:
        //     如果对 Internet 资源的请求所包含的 Connection HTTP 标头带有 Keep-alive 这一值,则为 true;否则为 false。默认值为
        //     true。
        public bool KeepAlive { get; set; }
        //
        // 摘要:
        //     获取或设置请求将跟随的重定向的最大数目。
        //
        // 返回结果:
        //     请求将跟随的重定向响应的最大数目。默认值为 50。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     该值被设置为 0 或更小。
        public int MaximumAutomaticRedirections { get; set; }
        //
        // 摘要:
        //     获取或设置响应标头允许的最大长度。
        //
        // 返回结果:
        //     响应标头的长度,以 KB(1024 字节)为单位。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     该属性是在提交请求后设置的。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     该值小于 0 并且不等于 -1。
        public int MaximumResponseHeadersLength { get; set; }
        //
        // 摘要:
        //     获取或设置请求的媒体类型。
        //
        // 返回结果:
        //     请求的媒体类型。默认值为 null。
        public string MediaType { get; set; }
        //
        // 摘要:
        //     获取或设置请求的方法。
        //
        // 返回结果:
        //     用于联系 Internet 资源的请求方法。默认值为 GET。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     未提供任何方法。- 或 -方法字符串包含无效字符。
        public override string Method { get; set; }
        //
        // 摘要:
        //     获取或设置一个值,该值指示是否通过管线将请求传输到 Internet 资源。
        //
        // 返回结果:
        //     如果通过管线传输请求,则为 true,否则为 false。默认值为 true。
        public bool Pipelined { get; set; }
        //
        // 摘要:
        //     获取或设置一个值,该值指示是否随请求发送一个 Authorization 标头。
        //
        // 返回结果:
        //     true 表示在发生身份验证之后随请求一起发送 HTTP 授权标头;否则为 false。默认值为 false。
        public override bool PreAuthenticate { get; set; }
        //
        // 摘要:
        //     获取或设置用于请求的 HTTP 版本。
        //
        // 返回结果:
        //     用于请求的 HTTP 版本。默认值为 System.Net.HttpVersion.Version11。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     HTTP 版本被设置为除 1.0 或 1.1 以外的值。
        public Version ProtocolVersion { get; set; }
        //
        // 摘要:
        //     获取或设置请求的代理信息。
        //
        // 返回结果:
        //     用于代理请求的 System.Net.IWebProxy 对象。默认值通过调用 System.Net.GlobalProxySelection.Select
        //     属性设置。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     将 System.Net.HttpWebRequest.Proxy 设置为 null。
        //
        //   T:System.InvalidOperationException:
        //     已通过调用 System.Net.HttpWebRequest.GetRequestStream、System.Net.HttpWebRequest.BeginGetRequestStream(System.AsyncCallback,System.Object)、System.Net.HttpWebRequest.GetResponse
        //     或 System.Net.HttpWebRequest.BeginGetResponse(System.AsyncCallback,System.Object)
        //     启动了该请求。
        //
        //   T:System.Security.SecurityException:
        //     调用方没有进行请求的操作的权限。
        public override IWebProxy Proxy { get; set; }
        //
        // 摘要:
        //     获取或设置写入或读取流时的超时(以毫秒为单位)。
        //
        // 返回结果:
        //     在写入超时或读取超时之前的毫秒数。默认值为 300,000 毫秒(5 分钟)。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     已发送请求。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     为 Set 操作指定的值小于等于零,并且不等于 System.Threading.Timeout.Infinite
        public int ReadWriteTimeout { get; set; }
        //
        // 摘要:
        //     获取或设置 Referer HTTP 标头的值。
        //
        // 返回结果:
        //     Referer HTTP 标头的值。默认值为 null。
        public string Referer { get; set; }
        //
        // 摘要:
        //     获取请求的原始统一资源标识符 (URI)。
        //
        // 返回结果:
        //     一个 System.Uri,其中包含传递给 System.Net.WebRequest.Create(System.String) 方法的 Internet
        //     资源的 URI。
        public override Uri RequestUri { get; }
        //
        // 摘要:
        //     获取或设置一个值,该值指示是否将数据分段发送到 Internet 资源。
        //
        // 返回结果:
        //     如果为 true,则将数据分段发送到 Internet 资源;否则为 false。默认值为 false。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     已通过调用 System.Net.HttpWebRequest.GetRequestStream、System.Net.HttpWebRequest.BeginGetRequestStream(System.AsyncCallback,System.Object)、System.Net.HttpWebRequest.GetResponse
        //     或 System.Net.HttpWebRequest.BeginGetResponse(System.AsyncCallback,System.Object)
        //     方法启动了该请求。
        public bool SendChunked { get; set; }
        //
        // 摘要:
        //     获取或设置用于验证服务器证书的回调函数。
        //
        // 返回结果:
        //     用于验证服务器证书的回调函数。用于验证服务器证书的回调函数。
        public RemoteCertificateValidationCallback ServerCertificateValidationCallback { get; set; }
        //
        // 摘要:
        //     获取用于请求的服务点。
        //
        // 返回结果:
        //     表示与 Internet 资源的网络连接的 System.Net.ServicePoint。
        public ServicePoint ServicePoint { get; }
        //
        // 摘要:
        //     获取一个值,该值指示请求是否为 System.Net.CookieContainer 提供支持。
        //
        // 返回结果:
        //     true如果请求提供了对支持System.Net.CookieContainer;否则为false。如果支持 System.Net.CookieContainer,则为
        //     true;否则为 false。
        public virtual bool SupportsCookieContainer { get; }
        //
        // 摘要:
        //     获取或设置 System.Net.HttpWebRequest.GetResponse 和 System.Net.HttpWebRequest.GetRequestStream
        //     方法的超时值(以毫秒为单位)。
        //
        // 返回结果:
        //     请求超时前等待的毫秒数。默认值是 100,000 毫秒(100 秒)。
        //
        // 异常:
        //   T:System.ArgumentOutOfRangeException:
        //     指定的值小于零,并且不为 System.Threading.Timeout.Infinite。
        public override int Timeout { get; set; }
        //
        // 摘要:
        //     获取或设置 Transfer-encoding HTTP 标头的值。
        //
        // 返回结果:
        //     Transfer-encoding HTTP 标头的值。默认值为 null。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     当 System.Net.HttpWebRequest.SendChunked 为 false 时设置 System.Net.HttpWebRequest.TransferEncoding。
        //
        //   T:System.ArgumentException:
        //     System.Net.HttpWebRequest.TransferEncoding 被设置为值“Chunked”。
        public string TransferEncoding { get; set; }
        //
        // 摘要:
        //     获取或设置一个值,该值指示是否允许经过高速 NTLM 身份验证的连接共享。
        //
        // 返回结果:
        //     true 表示使经过身份验证的连接保持打开状态;否则为 false。
        public bool UnsafeAuthenticatedConnectionSharing { get; set; }
        //
        // 摘要:
        //     获取或设置一个 System.Boolean 值,该值控制默认凭据是否随请求一起发送。
        //
        // 返回结果:
        //     如果使用默认凭据,则为 true;否则为 false。默认值为 false。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     您尝试在该请求发送之后设置此属性。
        public override bool UseDefaultCredentials { get; set; }
        //
        // 摘要:
        //     获取或设置 User-agent HTTP 标头的值。
        //
        // 返回结果:
        //     User-agent HTTP 标头的值。默认值为 null。说明此属性的值存储在 System.Net.WebHeaderCollection 中。如果设置了
        //     WebHeaderCollection,则该属性值将丢失。
        public string UserAgent { get; set; }

        //
        // 摘要:
        //     取消对 Internet 资源的请求。
        public override void Abort();
        //
        // 摘要:
        //     向请求添加从请求数据的开始处或结束处的特定范围的字节范围标头。
        //
        // 参数:
        //   range:
        //     范围的开始点或结束点。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     rangeSpecifier 无效。
        //
        //   T:System.InvalidOperationException:
        //     未能添加范围标头。
        public void AddRange(long range);
        //
        // 摘要:
        //     向请求添加从请求数据的开始处或结束处的特定范围的字节范围标头。
        //
        // 参数:
        //   range:
        //     范围的开始点或结束点。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     rangeSpecifier 无效。
        //
        //   T:System.InvalidOperationException:
        //     未能添加范围标头。
        public void AddRange(int range);
        //
        // 摘要:
        //     向请求添加从请求数据的开始处或结束处计算的特定范围的 Range 标头。
        //
        // 参数:
        //   rangeSpecifier:
        //     范围说明。
        //
        //   range:
        //     范围的开始点或结束点。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     rangeSpecifier 为 null。
        //
        //   T:System.ArgumentException:
        //     rangeSpecifier 无效。
        //
        //   T:System.InvalidOperationException:
        //     未能添加范围标头。
        public void AddRange(string rangeSpecifier, long range);
        //
        // 摘要:
        //     向请求添加从请求数据的开始处或结束处计算的特定范围的 Range 标头。
        //
        // 参数:
        //   rangeSpecifier:
        //     范围说明。
        //
        //   range:
        //     范围的开始点或结束点。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     rangeSpecifier 为 null。
        //
        //   T:System.ArgumentException:
        //     rangeSpecifier 无效。
        //
        //   T:System.InvalidOperationException:
        //     未能添加范围标头。
        public void AddRange(string rangeSpecifier, int range);
        //
        // 摘要:
        //     向请求添加指定范围的字节范围标头。
        //
        // 参数:
        //   from:
        //     开始发送数据的位置。
        //
        //   to:
        //     停止发送数据的位置。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     rangeSpecifier 无效。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     from 大于to- 或 - from 或 to 小于 0。
        //
        //   T:System.InvalidOperationException:
        //     未能添加范围标头。
        public void AddRange(long from, long to);
        //
        // 摘要:
        //     向请求添加指定范围的字节范围标头。
        //
        // 参数:
        //   from:
        //     开始发送数据的位置。
        //
        //   to:
        //     停止发送数据的位置。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     rangeSpecifier 无效。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     from 大于to- 或 - from 或 to 小于 0。
        //
        //   T:System.InvalidOperationException:
        //     未能添加范围标头。
        public void AddRange(int from, int to);
        //
        // 摘要:
        //     向请求添加指定范围的范围标头。
        //
        // 参数:
        //   rangeSpecifier:
        //     范围说明。
        //
        //   from:
        //     开始发送数据的位置。
        //
        //   to:
        //     停止发送数据的位置。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     rangeSpecifier 为 null。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     from 大于to- 或 - from 或 to 小于 0。
        //
        //   T:System.ArgumentException:
        //     rangeSpecifier 无效。
        //
        //   T:System.InvalidOperationException:
        //     未能添加范围标头。
        public void AddRange(string rangeSpecifier, long from, long to);
        //
        // 摘要:
        //     向请求添加指定范围的范围标头。
        //
        // 参数:
        //   rangeSpecifier:
        //     范围说明。
        //
        //   from:
        //     开始发送数据的位置。
        //
        //   to:
        //     停止发送数据的位置。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     rangeSpecifier 为 null。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     from 大于to- 或 - from 或 to 小于 0。
        //
        //   T:System.ArgumentException:
        //     rangeSpecifier 无效。
        //
        //   T:System.InvalidOperationException:
        //     未能添加范围标头。
        public void AddRange(string rangeSpecifier, int from, int to);
        //
        // 摘要:
        //     开始对用来写入数据的 System.IO.Stream 对象的异步请求。
        //
        // 参数:
        //   callback:
        //     System.AsyncCallback 委托。
        //
        //   state:
        //     此请求的状态对象。
        //
        // 返回结果:
        //     引用该异步请求的 System.IAsyncResult。
        //
        // 异常:
        //   T:System.Net.ProtocolViolationException:
        //     System.Net.HttpWebRequest.Method 属性为 GET 或 HEAD。- 或 - System.Net.HttpWebRequest.KeepAlive
        //     为 true,System.Net.HttpWebRequest.AllowWriteStreamBuffering 为 false,System.Net.HttpWebRequest.ContentLength
        //     为 -1,System.Net.HttpWebRequest.SendChunked 为 false,System.Net.HttpWebRequest.Method
        //     为 POST 或 PUT。
        //
        //   T:System.InvalidOperationException:
        //     流正由上一个 System.Net.HttpWebRequest.BeginGetRequestStream(System.AsyncCallback,System.Object)
        //     调用使用。- 或 - System.Net.HttpWebRequest.TransferEncoding 被设置为一个值,并且 System.Net.HttpWebRequest.SendChunked
        //     为 false。- 或 -线程池中的线程即将用完。
        //
        //   T:System.NotSupportedException:
        //     请求缓存验证程序指示对此请求的响应可从缓存中提供;但是写入数据的请求不得使用缓存。如果您正在使用错误实现的自定义缓存验证程序,则会发生此异常。
        //
        //   T:System.Net.WebException:
        //     System.Net.HttpWebRequest.Abort 以前被调用过。
        //
        //   T:System.ObjectDisposedException:
        //     在 .NET Compact Framework 应用程序中,未正确获得和关闭一个内容长度为零的请求流。有关处理内容长度为零的请求的更多信息,请参见 Network
        //     Programming in the .NET Compact Framework。
        public override IAsyncResult BeginGetRequestStream(AsyncCallback callback, object state);
        //
        // 摘要:
        //     开始对 Internet 资源的异步请求。
        //
        // 参数:
        //   callback:
        //     System.AsyncCallback 委托
        //
        //   state:
        //     此请求的状态对象。
        //
        // 返回结果:
        //     引用对响应的异步请求的 System.IAsyncResult。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     流正由上一个 System.Net.HttpWebRequest.BeginGetResponse(System.AsyncCallback,System.Object)
        //     调用使用- 或 - System.Net.HttpWebRequest.TransferEncoding 被设置为一个值,并且 System.Net.HttpWebRequest.SendChunked
        //     为 false。- 或 -线程池中的线程即将用完。
        //
        //   T:System.Net.ProtocolViolationException:
        //     System.Net.HttpWebRequest.Method 为 GET 或 HEAD,且 System.Net.HttpWebRequest.ContentLength
        //     大于零或 System.Net.HttpWebRequest.SendChunked 为 true。- 或 - System.Net.HttpWebRequest.KeepAlive
        //     为 true,System.Net.HttpWebRequest.AllowWriteStreamBuffering 为 false,同时 System.Net.HttpWebRequest.ContentLength
        //     为 -1,System.Net.HttpWebRequest.SendChunked 为 false,或者 System.Net.HttpWebRequest.Method
        //     为 POST 或 PUT。- 或 -该 System.Net.HttpWebRequest 具有实体,但不用调用 System.Net.HttpWebRequest.BeginGetRequestStream(System.AsyncCallback,System.Object)
        //     方法调用 System.Net.HttpWebRequest.BeginGetResponse(System.AsyncCallback,System.Object)
        //     方法。- 或 -System.Net.HttpWebRequest.ContentLength 大于零,但应用程序不会写入所有承诺的数据。
        //
        //   T:System.Net.WebException:
        //     System.Net.HttpWebRequest.Abort 以前被调用过。
        public override IAsyncResult BeginGetResponse(AsyncCallback callback, object state);
        //
        // 摘要:
        //     结束对用于写入数据的 System.IO.Stream 对象的异步请求。
        //
        // 参数:
        //   asyncResult:
        //     对流的挂起请求。
        //
        // 返回结果:
        //     用来写入请求数据的 System.IO.Stream。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     asyncResult 为 null。
        //
        //   T:System.IO.IOException:
        //     请求未完成,没有可用的流。
        //
        //   T:System.ArgumentException:
        //     当前实例没有从 System.Net.HttpWebRequest.BeginGetRequestStream(System.AsyncCallback,System.Object)
        //     调用返回 asyncResult。
        //
        //   T:System.InvalidOperationException:
        //     以前使用 asyncResult 调用过此方法。
        //
        //   T:System.Net.WebException:
        //     System.Net.HttpWebRequest.Abort 以前被调用过。- 或 -处理请求时发生错误。
        public override Stream EndGetRequestStream(IAsyncResult asyncResult);
        //
        // 摘要:
        //     结束对用于写入数据的 System.IO.Stream 对象的异步请求,并输出与该流关联的 System.Net.TransportContext。
        //
        // 参数:
        //   asyncResult:
        //     对流的挂起请求。
        //
        //   context:
        //     System.IO.Stream 的 System.Net.TransportContext。
        //
        // 返回结果:
        //     用来写入请求数据的 System.IO.Stream。
        //
        // 异常:
        //   T:System.ArgumentException:
        //     当前实例没有从 System.Net.HttpWebRequest.BeginGetRequestStream(System.AsyncCallback,System.Object)
        //     调用返回 asyncResult。
        //
        //   T:System.ArgumentNullException:
        //     asyncResult 为 null。
        //
        //   T:System.InvalidOperationException:
        //     以前使用 asyncResult 调用过此方法。
        //
        //   T:System.IO.IOException:
        //     请求未完成,没有可用的流。
        //
        //   T:System.Net.WebException:
        //     System.Net.HttpWebRequest.Abort 以前被调用过。- 或 -处理请求时发生错误。
        public Stream EndGetRequestStream(IAsyncResult asyncResult, out TransportContext context);
        //
        // 摘要:
        //     结束对 Internet 资源的异步请求。
        //
        // 参数:
        //   asyncResult:
        //     挂起的对响应的请求。
        //
        // 返回结果:
        //     包含来自 Internet 资源的响应的 System.Net.WebResponse。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     asyncResult 为 null。
        //
        //   T:System.InvalidOperationException:
        //     以前使用 asyncResult. 调用过此方法。- 或 -System.Net.HttpWebRequest.ContentLength 属性大于 0,但是数据尚未写入请求流。
        //
        //   T:System.Net.WebException:
        //     System.Net.HttpWebRequest.Abort 以前被调用过。- 或 -处理请求时发生错误。
        //
        //   T:System.ArgumentException:
        //     asyncResult was not returned by the current instance from a call to System.Net.HttpWebRequest.BeginGetResponse(System.AsyncCallback,System.Object).
        public override WebResponse EndGetResponse(IAsyncResult asyncResult);
        //
        // 摘要:
        //     获取用于写入请求数据的 System.IO.Stream 对象。
        //
        // 返回结果:
        //     用来写入请求数据的 System.IO.Stream。
        //
        // 异常:
        //   T:System.Net.ProtocolViolationException:
        //     System.Net.HttpWebRequest.Method 属性为 GET 或 HEAD。- 或 - System.Net.HttpWebRequest.KeepAlive
        //     为 true,System.Net.HttpWebRequest.AllowWriteStreamBuffering 为 false,System.Net.HttpWebRequest.ContentLength
        //     为 -1,System.Net.HttpWebRequest.SendChunked 为 false,System.Net.HttpWebRequest.Method
        //     为 POST 或 PUT。
        //
        //   T:System.InvalidOperationException:
        //     System.Net.HttpWebRequest.GetRequestStream 方法被调用多次。- 或 - System.Net.HttpWebRequest.TransferEncoding
        //     被设置为一个值,并且 System.Net.HttpWebRequest.SendChunked 为 false。
        //
        //   T:System.NotSupportedException:
        //     请求缓存验证程序指示对此请求的响应可从缓存中提供;但是写入数据的请求不得使用缓存。如果您正在使用错误实现的自定义缓存验证程序,则会发生此异常。
        //
        //   T:System.Net.WebException:
        //     System.Net.HttpWebRequest.Abort 以前被调用过。- 或 -请求的超时期限到期。- 或 -处理请求时发生错误。
        //
        //   T:System.ObjectDisposedException:
        //     在 .NET Compact Framework 应用程序中,未正确获得和关闭一个内容长度为零的请求流。有关处理内容长度为零的请求的更多信息,请参见 Network
        //     Programming in the .NET Compact Framework。
        public override Stream GetRequestStream();
        //
        // 摘要:
        //     获取用于写入请求数据的 System.IO.Stream 对象,并输出与该流关联的 System.Net.TransportContext。
        //
        // 参数:
        //   context:
        //     System.IO.Stream 的 System.Net.TransportContext。
        //
        // 返回结果:
        //     用来写入请求数据的 System.IO.Stream。
        //
        // 异常:
        //   T:System.Exception:
        //     System.Net.HttpWebRequest.GetRequestStream 方法无法获取 System.IO.Stream。
        //
        //   T:System.InvalidOperationException:
        //     System.Net.HttpWebRequest.GetRequestStream 方法被调用多次。- 或 - System.Net.HttpWebRequest.TransferEncoding
        //     被设置为一个值,并且 System.Net.HttpWebRequest.SendChunked 为 false。
        //
        //   T:System.NotSupportedException:
        //     请求缓存验证程序指示对此请求的响应可从缓存中提供;但是写入数据的请求不得使用缓存。如果您正在使用错误实现的自定义缓存验证程序,则会发生此异常。
        //
        //   T:System.Net.ProtocolViolationException:
        //     System.Net.HttpWebRequest.Method 属性为 GET 或 HEAD。- 或 - System.Net.HttpWebRequest.KeepAlive
        //     为 true,System.Net.HttpWebRequest.AllowWriteStreamBuffering 为 false,System.Net.HttpWebRequest.ContentLength
        //     为 -1,System.Net.HttpWebRequest.SendChunked 为 false,System.Net.HttpWebRequest.Method
        //     为 POST 或 PUT。
        //
        //   T:System.Net.WebException:
        //     System.Net.HttpWebRequest.Abort 以前被调用过。- 或 -请求的超时期限到期。- 或 -处理请求时发生错误。
        public Stream GetRequestStream(out TransportContext context);
        //
        // 摘要:
        //     返回来自 Internet 资源的响应。
        //
        // 返回结果:
        //     包含来自 Internet 资源的响应的 System.Net.WebResponse。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     流正由上一个 System.Net.HttpWebRequest.BeginGetResponse(System.AsyncCallback,System.Object)
        //     调用使用。- 或 - System.Net.HttpWebRequest.TransferEncoding 被设置为一个值,并且 System.Net.HttpWebRequest.SendChunked
        //     为 false。
        //
        //   T:System.Net.ProtocolViolationException:
        //     System.Net.HttpWebRequest.Method 为 GET 或 HEAD,并且或者 System.Net.HttpWebRequest.ContentLength
        //     大于或等于零,或者 System.Net.HttpWebRequest.SendChunked 为 true。- 或 - System.Net.HttpWebRequest.KeepAlive
        //     为 true,System.Net.HttpWebRequest.AllowWriteStreamBuffering 为 false,System.Net.HttpWebRequest.ContentLength
        //     为 -1,System.Net.HttpWebRequest.SendChunked 为 false,System.Net.HttpWebRequest.Method
        //     为 POST 或 PUT。- 或 -该 System.Net.HttpWebRequest 具有实体,但不用调用 System.Net.HttpWebRequest.GetRequestStream
        //     方法调用 System.Net.HttpWebRequest.GetResponse 方法。- 或 -System.Net.HttpWebRequest.ContentLength
        //     大于零,但应用程序不会写入所有承诺的数据。
        //
        //   T:System.NotSupportedException:
        //     请求缓存验证程序指示对此请求的响应可从缓存中提供;但是,此请求包含要发送到服务器的数据。发送数据的请求不得使用缓存。如果您正在使用错误实现的自定义缓存验证程序,则会发生此异常。
        //
        //   T:System.Net.WebException:
        //     System.Net.HttpWebRequest.Abort 以前被调用过。- 或 -请求的超时期限到期。- 或 -处理请求时发生错误。
        public override WebResponse GetResponse();
        //
        // 摘要:
        //     使用序列化目标对象所需的数据填充 System.Runtime.Serialization.SerializationInfo。
        //
        // 参数:
        //   serializationInfo:
        //     要填充数据的 System.Runtime.Serialization.SerializationInfo。
        //
        //   streamingContext:
        //     用于指定该序列化的目标的 System.Runtime.Serialization.StreamingContext。
        protected override void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext);
    }
}

猜你喜欢

转载自blog.csdn.net/Qin066/article/details/84191721
今日推荐