【发布时间】:2018-05-22 06:10:05
【问题描述】:
.NET Core 2.1 在System.Net.HttpClient 上带有一个很棒的improvement
对于 HttpClient,我们从头开始构建了一个新的托管 HttpClientHandler 称为SocketHttpHandler。正如你可能猜到的, 它是基于 .NET 套接字的 HttpClient 的 C# 实现和 跨度。
我的应用程序是作为 Windows 服务托管的 ASP.NET Core 应用程序,根据 Microsoft this doc,该项目基于 .NET Core,但其 TargetFramework 是 .NET 框架。
该应用程序适用于面向 .NET Framework 4.7.1 的 .NET Core 2.0。
最近微软发布了 Microsoft.AspNetCore 2.1.0-rc1-final,它可以用于生产。所以我尝试升级到这个版本。
所以我将TargetFramework 升级到 4.7.2 并将参考升级如下。
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.0-rc1-final" />
<PackageReference Include="Microsoft.AspNetCore.Hosting.WindowsServices" Version="2.1.0-rc1-final" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.1.0-rc1-final" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.1.0-rc1-final" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.1.0-rc1-final" />
<PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="2.1.0-rc1-final" />
然后它停止工作并且编译器引发错误,例如 找不到类型或命名空间名称“HttpClient”
我知道HttpClient 存在于NuGet System.Net.Http 程序集中。
但是它的最新版本是 8 个月前的 4.3.3,在我看来它不包含 SocketHttpHandler 的实现。
所以我的问题是:如何使用 .NET Core 2.1 中针对 .NET framework 4.7.2 的最新 HttpClient?
【问题讨论】:
-
.NET Core 与 ASP.NET Core 不同。 .NET Core 是底层运行时。 ASP.NET Core 是一个可以在 .NET Core 或完整的 .NET Framework 之上运行的框架。正如您所提到的,您的应用程序针对的是完整框架的 4.7.2 版本,而不是 .NET Core 2.0 或 2.1
-
如果你想使用它,你必须切换到 .NET Core 2.1 并且不再以 .NET Framework 4.7.x 为目标。您仍然可以在 Windows 上运行它并使用大部分 API,甚至包括带有 Windows 兼容包的注册表之类的东西。当然,它会将您限制在 Windows 作为托管平台,但您会从 .NET Core 的改进中受益
-
@PanagiotisKanavos,请查看我的问题中链接的 MS 文档,在 Windows 服务中托管 ASP.NET Core 时,目标框架必须设置为 .NET Framework。当我使用 .NET Core 2.0 时,它适用于 .NET 4.7.1
-
@Tseng,我正在关注微软的 doc,它清楚地解释了 targetFramework 必须是我的 ASP.NET Core 应用程序的 .NET 框架。
-
@Mr.WangfromNextDoor 该文档与运行时.NET Core 无关。我已经在控制台应用程序中的 .NET Core 2.1 RC 上使用了 SocketHttpHandler。无论您是否使用 ASP.NET Core 堆栈,您都无法在 .NET Framework 4.7 上使用它。它不是 ASP.NET Core 堆栈的一部分。它是 .NET Core BCL 的一部分,您没有在该运行时上运行。如果要使用 SocketHttpHandler,则必须使用 ASP.NET Core 模板创建一个新的 .NET Core 2.1 项目
标签: asp.net-core .net-core asp.net-core-2.0 dotnet-httpclient system.net