HttpClient的Get或Post不适用于.NETCore 2.1和2.2,但适用于.NETCore 2.0

时间:2019-01-03 17:22:05

标签: visual-studio-2017 asp.net-core-2.1

我使用Visual Studio 2017 v15.9.4,.NET Standard 2.0.3和最新版本的.NETCore 2.1.6。我在Windows 10 64位系统上运行我的应用程序。

此代码:

 using (HttpClient client = new HttpClient())
            {
                try
                {
                    var response = await client.GetAsync("http://httpbin.org/")
                ...

不适用于最新版本的.NET Core 2.1或2.2。 我有这个例外:

Result StackTrace:  
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at EliorNugetCommon.Tests.APIManagerTests.Get() in D:\Git\Elior-Group\WebApiServices\NugetWAS\EliorNugetCommon\EliorNugetCommon.Tests\APIManagerTests.cs:line 50
----- Inner Stack Trace -----
Result Message: 
System.AggregateException : One or more errors occurred. (A task was canceled.)
---- System.Threading.Tasks.TaskCanceledException : A task was canceled.

但是,这适用于.NET Core 2.0.9!

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在.NET Core和.NET Core 2.2中使用新的HTTP堆栈时,在代理后面进行了身份验证以进行回归。在这种情况下,我们可以使用.NET Core 2.0 HTTP堆栈此开关:

AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);

有关更多信息,请参见此处:https://github.com/dotnet/corefx/issues/30166