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;
            }
        }

  

原文地址:https://www.cnblogs.com/panpanwelcome/p/12203076.html

时间: 2024-10-20 09:50:58

http请求端口占用异常的相关文章

Dos命令查看端口占用及关闭进程

1. 查看端口占用 在windows命令行窗口下执行: netstat -aon|findstr "8080" TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448 端口"8080"被PID(进程号)为2448的进程占用. 查看端口"8080"被哪个应用占用,,继续执行下面命令: tasklist|findstr "2448" notepad.exe 2016 Console 0 16,064 K

Dos命令查看端口占用及关闭进

Dos命令查看端口占用及关闭进程 1. 查看端口占用 2. 关闭进程 3. 端口状态 1. 查看端口占用 在windows命令行窗口下执行: netstat -aon|findstr "8080" TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448 端口“8080”被PID(进程号)为2448的进程占用. 查看端口“8080”被哪个应用占用,,继续执行下面命令: tasklist|findstr "2448" notepad.exe

DOS查看端口占用及杀掉进程命令

MyEclipse启动tomcat时出现端口被占用的问题: 1. 查看端口占用 在windows命令行窗口下执行: netstat -aon|findstr 8080 TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448 端口“8080”被PID(进程号)为2448的进程占用. 查看端口“8080”被哪个应用占用,,继续执行下面命令: tasklist|findstr "2448" notepad.exe 2016 Console 0 16,064 K 2

扫描端口占用情况的python脚本

之前项目上线前,领导要求让写一个脚本用来判断端口的占用情况.由于现在python3使用也比较多,基于python2修改了一下,做了个python3版本的,现在做一下总结. 一.python脚本实现扫描端口: pthon2下代码如下(当时的环境): #!/usr/bin/env python # -*- coding:utf-8 -*- # used for pthon2.*    import socket, time, thread socket.setdefaulttimeout(3) #设

linux查看端口占用情况

Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 # lsof -i:8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME lwfs 22065 root 6u IPv4 4395053 0t0 TCP *:irdmi (LISTEN) 可以看到8000端口已经被轻量级文件系统转发服务lwfs占用 2.netstat -tunlp |grep 端口号,用

windows 如何查看端口占用情况

开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列" 经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用 假如我们需要确定谁占用了我们的9050端口 1.Windows平台 在windows命令行窗口下执

在windows操作系统中,查询端口占用和清除端口占用的程序

一.在windows操作系统中,查询端口占用和清除端口占用的程序 提升权限后用:netstat -b或用 1.查询端口占用的进程ID 点击"开始"-->"运行",输入"cmd"后点击确定按钮,进入DOS窗口,接下来分别运行以下命令:netstat -a -n  各个端口占用netstat -ano   各个端口占用和进程PID          netstat -aon | findstr "80"      C:\Us

查看端口占用

查看445端口占用情况 port=445 pid=netstat -nltp | grep -E ":{3}$port" | sed -r 's/.*(\b[0-9]{4,5}\/).*/\1/g' | tr -d '/' test -n $pid && echo "port invalid" date "+20%y/%m/%d %H:%M:%S"

Linux 查看端口占用情况

转自:http://www.cnblogs.com/fabulousyoung/p/4071150.html 例子,查看80端口的占用情况: lsof -i:80 或者: netstat -apn | grep 80 上面的命令执行之后可以显示进程号,找到进程号以后,再使用以下命令查看详细信息: ps -aux | grep <进程号> 附: windows下查看端口占用命令: netstat -ano | findstr 80 windows下查看进程列表命令: tasklist