zoukankan      html  css  js  c++  java
  • http请求端口占用异常——处理思路

    解决思路:

    1.  ESTABLISHED 过多,使用static解决

           static HttpClientHandler StaticHttpClientHandler = new HttpClientHandler
            {
                AllowAutoRedirect = true,
                Proxy = new System.Net.WebProxy(ConfigHelper.FacebookProxyHostUrl)
            };
    
            static HttpClient StaticHttpClient = new HttpClient(StaticHttpClientHandler, false)
            {
                Timeout = TimeSpan.FromSeconds(10)
            };
    
            [HttpGet]
            [Route(nameof(TestProxy))]
            public async Task<bool> TestProxy()
            {
                string siteUrl = "https://www.google.com";
                var httpClient = StaticHttpClient;
                var requestMessage = new HttpRequestMessage
                {
                    Method = HttpMethod.Get,
                    RequestUri = new Uri(siteUrl, UriKind.Absolute),
                };
                var result =await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead);
                result.EnsureSuccessStatusCode();
                return true;
            }
    

      

    2.方案1导致ESTABLISHED 控制住,但是CLOSE_WAIT太多,使用IHttpClientFactory解决

                //Startup.cs中的public void ConfigureServices(IServiceCollection services)
                services.AddHttpClient();
                services.AddHttpClient("configured-proxy-handler")
                .ConfigurePrimaryHttpMessageHandler(() =>
                {
                    return new HttpClientHandler()
                    {
                        AllowAutoRedirect = true,
                        Proxy = new System.Net.WebProxy(ConfigHelper.FacebookProxyHostUrl)
                    };
                });    
    
    
             
            //使用
            private readonly IHttpClientFactory _httpClientFactory;
            public OpsController(IHttpClientFactory httpClientFactory)
            {
                _httpClientFactory = httpClientFactory;
            }
    
            [HttpGet]
            [Route(nameof(TestProxy3))]
            public async Task<bool> TestProxy3()
            {
                string siteUrl = "https://www.google.com";
                var httpClient = _httpClientFactory.CreateClient("configured-proxy-handler");
                httpClient.Timeout = TimeSpan.FromSeconds(10);
                try
                {
                    var requestMessage = new HttpRequestMessage
                    {
                        Method = HttpMethod.Get,
                        RequestUri = new Uri(siteUrl, UriKind.Absolute),
                    };
                    var result = await httpClient.GetAsync(siteUrl, HttpCompletionOption.ResponseHeadersRead);
                    result.EnsureSuccessStatusCode();
                    return true;
                }catch(Exception ex)
                {
                    return false;
                }
            }
    

      

  • 相关阅读:
    2020-07-21日报博客
    java第十九天
    Java第十八章
    Java第十七天
    Java第十六天
    Java第十五天
    Java第十四天
    Java第十三天
    Pytorch-数据增强
    Pytorch-实现ResNet-18并在Cifar-10数据集上进行验证
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/12203076.html
Copyright © 2011-2022 走看看