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.Timeout = new TimeSpan(0, 0, 10); }).ConfigurePrimaryHttpMessageHandler(() => { return httpclientHandler; });
看提示应该是SocketsHttpHandler 资源释放了,没重新实例化。
在github上看到一个答案 说 ConfigurePrimaryHttpMessageHandler 里面不要直接return HttpClientHandler,要重新new 一下
改完后的如下:
services.AddHttpClient("tmkhttp", option => { option.Timeout = new TimeSpan(0, 0, 10); }).ConfigurePrimaryHttpMessageHandler(() => { return new HttpClientHandler() { MaxRequestContentBufferSize = 102400 , AutomaticDecompression = DecompressionMethods.GZip , ServerCertificateCustomValidationCallback = (message, cert, chain, error) => true }; });