.net core FlUrl的这种使用会管理dns更改吗
在.NETCore2.1中,我使用库Flurl来防止著名的HttpClient套接字耗尽问题。因为我使用的是遗留软件,所以我们不能使用DI注入。 所以我在做一些非常简单的事情,比如:.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更改是否由库以某种方式管理?如果没
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());