asp.net Core HttpClient 出现Cannot access a disposed object. Object name: 'SocketsHttpHandler' 的问题。

ASP.NET Core 部署在Centos 中 偶尔出现

One or more errors occurred. (Cannot access a disposed object.Object name: ‘SocketsHttpHandler‘.)

之前的写法如下:

  var httpclientHandler = new HttpClientHandler();
            httpclientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, error) => true;
            httpclientHandler.AutomaticDecompression = DecompressionMethods.GZip;
            httpclientHandler.MaxRequestContentBufferSize = 102400;
            services.AddHttpClient("tmkhttp", option =>
            {
                option.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36");
                option.Timeout = new TimeSpan(0, 0, 10);
            }).ConfigurePrimaryHttpMessageHandler(() =>
            {
                return httpclientHandler;
            }); 

看提示应该是SocketsHttpHandler 资源释放了,没重新实例化。

在github上看到一个答案 说  ConfigurePrimaryHttpMessageHandler 里面不要直接return HttpClientHandler,要重新new 一下

改完后的如下:

 services.AddHttpClient("tmkhttp", option =>
            {
                option.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36");
                option.Timeout = new TimeSpan(0, 0, 10);
            }).ConfigurePrimaryHttpMessageHandler(() =>
            {
                return new HttpClientHandler()
                {
                    MaxRequestContentBufferSize = 102400 ,
                    AutomaticDecompression = DecompressionMethods.GZip ,
                    ServerCertificateCustomValidationCallback = (message, cert, chain, error) => true
                };

            }); 

asp.net Core HttpClient 出现Cannot access a disposed object. Object name: 'SocketsHttpHandler' 的问题。

原文地址:https://www.cnblogs.com/wangjun8868/p/10722633.html

时间: 2024-10-29 03:08:07

asp.net Core HttpClient 出现Cannot access a disposed object. Object name: 'SocketsHttpHandler' 的问题。的相关文章

Asp.Net Core 轻松学-HttpClient的演进和避坑

前言 ????在 Asp.Net Core 1.0 时代,由于设计上的问题, HttpClient 给开发者带来了无尽的困扰,用 Asp.Net Core 开发团队的话来说就是:我们注意到,HttpClient 被很多开发人员不正确的使用.得益于 .Net Core 不断的版本快速升级:解决方案也一一浮出水面,本文尝试从各个业务场景去剖析 HttpClient 的各种使用方式,从而在开发中正确的使用 HttpClient 进行网络请求. 1.0时代发生的事情 1.1 在 1.0 时代,部署在 L

ASP.NET Core中如何针对一个使用HttpClient对象的类编写单元测试

原文地址: How to unit test a class that consumes an HttpClient with IHttpClientFactory in ASP.NET Core? 作者: Anthony Giretti 译者: Lamond Lu 介绍 几年前,微软引入了HttpClient类来替代HttpWebRequest来发送Web请求.这个新的类更易于使用,更加简洁,更具有异步性,且易于扩展. HttpClient类有一个可以接受HttpMessageHandler类

C# ASP.NET Core使用HttpClient的同步和异步请求

引用 Newtonsoft.Json // Post请求 public string PostResponse(string url,string postData,out string statusCode) { string result = string.Empty; //设置Http的正文 HttpContent httpContent = new StringContent(postData); //设置Http的内容标头 httpContent.Headers.ContentType

.net core下用HttpClient和asp.net core实现https的双向认证

原文:.net core下用HttpClient和asp.net core实现https的双向认证 关于https双向认证的知识可先行google,这时矸接代码. 为了双向认证,我们首先得准备两个crt证书,一个是client.crt,一个是server.crt,有时为了验证是否同一个根证书的验证,这两个证书可以共有一个根证书root.crt. 首先要生成这些证书,这里采用了自签证书方式: 证书生成工具可在这里下载(windows下生成): https://github.com/axzxs200

Cannot access a disposed object in ASP.NET Core

Cannot access a disposed object in ASP.NET Core 楠木大叔???? 导航 常见原因 总结 ??对于.neter来说,在使用ASP.NET Core的过程中,大家或多或少会遇到这样的报错--"Cannot access a disposed object".出现这样的异常的原因有很多,如果它在调试的时候出现是很容易解决的,但是有些时候它在本地运行良好,等到你部署到生产环境才会表现出来.针对这个异常,请跟随我一起来分析和探究其根本原因. ??在

Asp.Net Core中HttpClient的使用方式

原文:Asp.Net Core中HttpClient的使用方式 在.Net Core应用开发中,调用第三方接口也是常有的事情,HttpClient使用人数.使用频率算是最高的一种了,在.Net Core中,HttpClient的使用方式随着版本的升级也发生了一些变化,本次就讲解一下Asp.Net Core2.1前后使用的两种方式. 一.原先HttpClient使用方式 一般来讲,喜欢要用的时候才会选择去获取资源,因此,当在有需求时才会用HttpClient去调用资源,便会使用如下这种方式或其它方

ASP.NET Core 认证与授权[4]:JwtBearer认证

在现代Web应用程序中,通常会使用Web, WebApp, NativeApp等多种呈现方式,而后端也由以前的Razor渲染HTML,转变为Stateless的RESTFulAPI,因此,我们需要一种标准的,通用的,无状态的,与语言无关的认证方式,也就是本文要介绍的JwtBearer认证. 目录 Bearer认证 JWT(JSON WEB TOKEN) 头部(Header) 载荷(Payload) 签名(Signature) 示例 模拟Token 注册JwtBearer认证 添加受保护资源 运行

【.NET Core】ASP.NET Core之IdentityServer4(1):快速入门

本文中的IdentityServer4基于上节的jenkins 进行docker自动化部署. 使用了MariaDB,EF Core,AspNetIdentity,Docker Demo地址:https://sso.neverc.cn Demo源码:https://github.com/NeverCL/Geek.IdentityServer4 简介 OpenID Connect :常用的认证协议有SAML2p, WS-Federation and OpenID Connect – SAML2p.O

Ubuntu-18.04 下使用Nginx搭建高可用,高并发的asp.net core集群

一.实现前的准备 以下是实现简单负载均衡的思路,图中的服务器均为虚拟机 三台Linux服务器,一台用作Nginx负载均衡(192.168.254.139),另外两台用作Asp.Net Core应用程序承载的服务器(192.168.254.140,192.168.254.141) 一台用作于Client的Windows服务器. 二.环境搭建 1.Asp.Net Core程序 就是一个新建的空web应用程序,然后修改了下Startup的中间件,分别部署到2台Ubuntu上. public class