.net core FlUrl的这种使用会管理dns更改吗

.net core FlUrl的这种使用会管理dns更改吗,.net-core,flurl,.net Core,Flurl,在.NETCore2.1中,我使用库Flurl来防止著名的HttpClient套接字耗尽问题。因为我使用的是遗留软件,所以我们不能使用DI注入。 所以我在做一些非常简单的事情,比如: var responseMessage = await url.PostAsync(content); 文件中说: 像这样的Fluent方法将延迟创建HTTP客户端,缓存它,并在对同一主机的每次调用中重新使用它: 但是,我找不到任何关于潜在DNS更改的信息。由于它使用缓存,DNS更改是否由库以某种方式管理?如果没

在.NETCore2.1中,我使用库Flurl来防止著名的HttpClient套接字耗尽问题。因为我使用的是遗留软件,所以我们不能使用DI注入。 所以我在做一些非常简单的事情,比如:

var responseMessage = await url.PostAsync(content);
文件中说:

像这样的Fluent方法将延迟创建HTTP客户端,缓存它,并在对同一主机的每次调用中重新使用它:


但是,我找不到任何关于潜在DNS更改的信息。由于它使用缓存,DNS更改是否由库以某种方式管理?如果没有,我如何跟踪DNS更改以及防止套接字耗尽问题?

Flurl能够通过全局配置定期处理/重新创建底层
HttpClient
实例(在应用程序启动时完成):

这与使用.NET Framework的
ServicePointManager.ConnectionLaseTimeout
的类似,只是它适用于所有平台

在.NETCore2.1中引入的另一种方法是使用文档记录较少的。这是.NET Core上的解决方案,Flurl可以通过自定义工厂使用它:

public class ConnectionLifetimeHttpClientFactory : DefaultHttpClientFactory
{
    public override HttpMessageHandler CreateMessageHandler()
    {
        return new SocketsHttpHandler {
            PooledConnectionLifetime = TimeSpan.FromMinutes(2);
        };
    }
}
然后在启动时注册:

FlurlHttp.Configure(settings =>
    settings.HttpClientFactory = new ConnectionLifetimeHttpClientFactory());
作为一个警告,我还没有实际测试过它,但它应该可以工作,我可能会建议它稍微优于第一个选项,因为它利用了更多的平台本机功能,因此可能会更高效一些

FlurlHttp.Configure(settings =>
    settings.HttpClientFactory = new ConnectionLifetimeHttpClientFactory());