在项目中调用了一条比较复杂的sql 写的web api,调用的时候经常操作超时。

HttpWebRequest.GetResponse()操作超时

 

   修改HttpWebRequest.Timeout与HttpWebRequest.KeepAlive

   具体相关代码如下:

     /// <summary>  
        /// 创建GET方式的HTTP请求  
        /// </summary>  
        public static HttpWebResponse CreateGetHttpResponse(string url, int timeout, string userAgent, CookieCollection cookies)
        {
            HttpWebRequest request = null;
            if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
            {
                //对服务端证书进行有效性校验(非第三方权威机构颁发的证书,如自己生成的,不进行验证,这里返回true)
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                request = WebRequest.Create(url) as HttpWebRequest;
                request.ProtocolVersion = HttpVersion.Version10;    //http版本,默认是1.1,这里设置为1.0
            }
            else
            {
                request = WebRequest.Create(url) as HttpWebRequest;
            }
            request.Method = "GET";

            //设置代理UserAgent和超时
            //request.UserAgent = userAgent;
            //request.Timeout = timeout;
            if (cookies != null)
            {
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.Add(cookies);
            }
            try
            {
                request.Timeout = Timeout.Infinite;
                request.KeepAlive = true;
                return request.GetResponse() as HttpWebResponse;
            }
            catch (WebException ex)
            {
                return (HttpWebResponse)ex.Response;

            }
        }

 

相关文章:

  • 2021-12-17
  • 2022-12-23
  • 2021-09-11
  • 2021-06-07
  • 2021-11-05
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-01
  • 2022-12-23
  • 2022-12-23
  • 2021-09-27
  • 2021-11-01
  • 2022-01-01
相关资源
相似解决方案