【问题标题】:How do I implement IHttpClientFactory in .net framework apart from .Net core?除了 .Net 核心,如何在 .net 框架中实现 IHttpClientFactory?
【发布时间】:2018-07-23 21:42:04
【问题描述】:

在.Net core中,我们可以使用IHttpClientFactory在运行时注入和使用。作为开发人员,我无需担心依赖关系的解决。我只需要在服务集合中指定 AddHttpClient() 即可。 同样,如何在 WPF 应用程序 .net framework 4.6.1 中使用 IHttpClientFactory?由于没有可用于 WPF 应用程序的服务集合,因此不知道如何解决依赖关系。

【问题讨论】:

  • @ChrisPratt 这是一个 .NET Standard 2.0 包,可在任何兼容的运行时使用

标签: c#-4.0 asp.net-core-2.0


【解决方案1】:

您可以将Microsoft.Extensions.Http NuGet 包添加到任何符合 .NET Standard 2.0 的项目中。这包括以 .NET 4.6.1 为目标的项目

所有 Microsoft.Extensions.* 包都是 .NET Standard 2.0 包,这意味着您可以使用与 .NET Core 相同的配置、依赖注入、日志记录服务。

Microsoft.Extensions.Http 仅提供 HttpClientFactory,而不是新优化的HttpClient。这仅在 .NET Core 2.1 中可用

【讨论】:

  • 解释IHttpClientFactory的文章说问题是.NET Core中默认的HttpClient(没有提到.NET Framework)会导致socket-exhaustion问题 - .NET Framework 4.8 中的默认 HttpClient 是否存在此问题?如果没有,那么就没有必要在 .NET Framework 项目中使用 IHttpClientFactory,他们可以使用长寿命的单例 HttpClient 实例,不是吗?
  • @Dai 我认为问题存在于两种实现中。 4.8 和 3.1 文档都提到了这个问题。无法链接两个 URL 太长。不用做测试,使用工厂更安全。
  • @Dai no - 事实上问题恰恰相反。套接字耗尽是caused when you don't reuse an instance。在您处理 HttpClient 等待任何剩余的远程数据包后,操作系统会保留套接字长达 240 秒。当你重用一个实例时,你将 socket 重用到一个特定的 machine 这意味着any DNS changes will be missed
猜你喜欢
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 2017-06-18
相关资源
最近更新 更多